Получить параметры с чистым URL в среде с несколькими хостингами
Корень сайта содержит три директории, скажем a,b,c
все действуют как root для разных доменов
я создал один .htaccess
в каталоге b
и добавил к нему следующие правила
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^([^/]*)/?([^/]*)/$ /b/sample-page?bbi=$1&bbl=$2 [L]
Вместо последней строки выше, я также попытался
RewriteRule ^b/([^/]*)/([^/]*)$ /b/sample-page?bbi=$1&bbl=$2 [QSA,L]
Используя вышеуказанные правила
http://testsite.com/b/pageone.php
успешно переписан как
http://testsite.com/b/pageone
Но http://testsite.com/b/sample-page.php?bbi=value1&bbl=value2
переписан как http://testsite.com/b/sample-page?bbi=value1&bbl=value2
вместо
http://testsite.com/b/sample-page/value1/value2
или же
http://testsite.com/sample-page/value1/value2
1 ответ
Вам нужно добавить L
пометить ваше другое правило:
RewriteRule ^(.*)$ $1.php [L]
Чтобы справиться с другой ситуацией, вам нужно добавить правило перед этим.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/b/([^/]+)/([^/]+)/([^/]+)
RewriteCond %{DOCUMENT_ROOT}/b/%1.php -f
RewriteRule ^/?([^/]+)/([^/]+)/([^/]+) $1.php?bbi=$2&bbl=$3 [L]
Это должно быть так, когда вы идете в http://testsite.com/b/sample-page/value1/value2
вы получаете содержание в /b/sample-page.php?bbi=value1&bbl=value2