Değişken istekleri belge isteklerini ayırt etmek nasıl?

1 Cevap php

Benim son yazılan yalaka, yararsızdır "yanıtlar" (yorum) tarafından karşılandı, bu yüzden doğru ona alırsınız:

Ben şöyle bir htaccess dosyası varsa:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)$ /index.php?page=$1&subject=$2
RewriteRule ^([^/]+)$ /index.php?page=$1 [L]

nasıl diğer url değişken isimleri ve ele alınması gereken değerler için izin verebilirsiniz ... Fazladan beklenmedik url eklemek istiyorum örneğin demek bu senaryoya vars

/page/subject?urlvar1=value1&urlvar2=value2

ve beklenmeyen sonuçlar yaratmadan istediğim sayfa?

Herhangi bir gerçek yardım büyük beğeni topluyor. Teşekkürler!

1 Cevap

Eğer kurallara [QSA] (sorgu dizesi append) bayrağı eklemeniz gerekir.

Genel bir tavsiye olarak, sanki tek bir genel kural olması daha iyidir

 RewriteRule .* index.php?path=$0

ve php düzeyinde yolu ayrıştırmak. Bu çok daha esnek ve şeffaf.

ayrıntılı, burada tam tuzak

. Htaccess

Options +FollowSymLinks

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php?path=$0 [QSA]

index.php

<pre>
<?php 
print_r($_GET);
?>
</pre>

www.example.com/foo/bar/baz?quux=123&blah=456 Bu baskılar gibi çağrıldığında

Array
(
    [path] => foo/bar/baz
    [quux] => 123
    [blah] => 456
)

kalan tek şey patlayabilir veya düzenli ifadeler ile $ _GET ['path'] ayrıştırmak için.