Почему .htaccess получает в качестве входных данных только index.php - PullRequest
0 голосов
/ 12 июля 2010

Я добавил файл .htaccess в свою корневую папку и хотел, чтобы все записанное после / было отправлено в файл index.php для получения данных.

Мой корневой путь выглядит следующим образом http://www.site.com/folder/ и мой .htaccess находится в каталоге с папкой вместе с index.php

Это мой файл .htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) index.php?args=$1

Теперь, что бы я ни писал в папке /в моем URL args это "index.php".Поэтому, когда я захожу на сайт www.site.com/folder/lots/of/bogey, переменная args имеет значение «index.php»

Моя цель, очевидно, состоит в том, чтобы переменная args была «lot / of / bogey».Есть идеи, что я делаю не так?

Ответы [ 3 ]

1 голос
/ 12 июля 2010

Вам не нужен RewriteCond. Будет работать следующее:

RewriteRule ^(.*)$ index.php?args=$1 [L,QSA]

L останавливает сопоставление правил перезаписи, а QSA - для добавления строки запроса в правило перезаписи. См. mod_rewrite

0 голосов
/ 12 июля 2010

Вы должны будете по крайней мере исключить index.php из перенаправления:

RewriteCond $0 !^index\.php$
RewriteRule .* index.php?args=$0 [QSA,B]
0 голосов
/ 12 июля 2010

Я думаю, это потому, что после выполнения RewriteRule и получения index.php?args=... снова вызывается RewriteRule. Теперь index.php - это ваше имя файла, поэтому оно передается как аргумент. После этого mod_rewrite прерывается из-за рекурсии. Чтобы это исправить, добавьте RewriteCond, который гарантирует, что файл не index.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...