2010-07-11 1 views
0

Я добавил файл .htaccess в свою корневую папку, и мне было нужно все, что было записано после /, которое должно быть отправлено в файл index.php в виде данных.Почему .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 была «lots/of/bogey». Любые идеи, что я делаю неправильно?

ответ

0

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

0

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

RewriteCond $0 !^index\.php$ 
RewriteRule .* index.php?args=$0 [QSA,B] 
+0

Было бы лучше для моих тегов изображений, если бы я мог исключить любой ввод, содержащий «.». Не могли бы вы показать мне, как это сделать? – Hubro

+0

@Code Замените rewritecond, который я дал для 'RewriteCond $ 0! \.'. Так как «index.php» имеет точку, это также приводит к индексу index.php – Artefacto

+0

RewriteCond $ 0! \. это то, что я сделал, и это сработало чудеса. Спасибо – Hubro

1

Вам не нужно RewriteCond. Далее будет работать:

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

L делает остановки согласования правил перезаписи, и QSA для добавления в строку запроса в правила перезаписи. Обратитесь к mod_rewrite

+0

Не могли бы вы объяснить, что делают флаги? thx – Hubro

+0

Нет, это не сработает. Несмотря на то, что в этом проходе это R [L] ast RewriteRule, mod_rewrite снова вызовет себя новым, переписанным filname - который будет index.php! – NikiC

+0

@nikic. Что вы имеете в виду, это не сработает. Я действительно испытал это, и это сработало. – grom