Получить параметры с чистым 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

Другие вопросы по тегам