У меня возникли некоторые проблемы при переписывании плоских ссылок с использованием htaccess, у меня есть два набора правил, которые независимо друг от друга работают идеально, но при их объединении они имеют нежелательный эффект.
В первом разделе добавлен трейлинг впередкосая черта, если она отсутствует, и переписывает URL с переадресацией 301.
Вторая преобразует все «папки» в параметры, которые затем передаются в php в определенном формате.
У нас есть неизвестное количество папок в зависимости от страницы, поэтому мы хотим сохранить общий код.
Проблема в том, что, хотя функциональность кода работает (т.е. php получает правильные параметры),URL переписан в неправильном формате.
Код Php:
<code><?php echo ‘<pre>’;print_r($_GET); echo ‘
';?>
Пример URL: (удален HTTP: // как ограничендве ссылки на вопрос)
localhost/foo/bar
переписывается в
test.localhost/foo&other[]=bar/
с выводом:
Array
(
[p] => foo
[other] => Array
(
[0] => bar
)
)
Если вы удалите первый раздел для htaccess, товывод такой же, а URL остается:
localhost/foo/bar
HTACCESS:
Options +FollowSymlinks
RewriteEngine on
РАЗДЕЛ 1:
RewriteCond %{REQUEST_URI} !.*/$
RewriteRule (.*)$ /$1/ [L,R=301]
РАЗДЕЛ 2:
RewriteRule ^(.*)/([^/]+)/?$ $1&other[]=$2 [L]
RewriteRule ^(?!index\.php)([^/]+)/?$ /index.php?p=$1 [L,QSA]