Я попытался найти всюду по этой проблеме, но я ничего не нашел.
Я хочу сделать make url seo friendly, поэтому я использовал этот код:
RewriteEngine on
RewriteRule ^Homepage index.php [NC,L]
Затем я хочу перенаправить его, поэтому я попытался написать этот код:
RewriteRule ^index.php$ http://localhost/siti/socialmark/Homepage [R=301,L]
Ошибка - это цикл перенаправления, может кто-нибудь мне помочь?
ИЗВИНИТЕ ЗА МОЙ ПЛОХОЙ АНГЛИЙСКИЙ!
Правила перезаписи не просто заставляют строку URL выглядеть иначе, она фактически направляет пользователя в файл в конце пути, даже если вы не видите его в адресной строке. Если Homepage
- это каталог, содержащий index.php
, даже если это имя файла php не отображается в URL-адресе, оно вызывает цикл, потому что оно направляет вас в каталог с index.php
.
Правило выполняется каждый раз, когда эта страница загружается. Таким образом, вы перенаправляетесь на страницу, на которой выполняется сценарий перенаправления, поэтому он запускает правило для перенаправления снова, и это вызывает цикл. То, что вы хотите сделать, это создать условие, в котором говорится: "Не запускайте этот код, если запрашиваемая страница: http://localhost/siti/socialmark/Homepage
"
Что-то вроде этого (возможно, вам придется его настроить)
RewriteBase /
RewriteCond %{REQUEST_URI} !=/siti/socialmark/Homepage
RewriteRule ^Homepage index.php [NC,L]
Для получения дополнительной информации см. Оговорки и пример здесь: http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_l
.htcaccess RewriteRule
.
Homepage > index.php > Homepage.index.php > ...
так что, может быть, просто удалите второе правило? использовать PHP для перенаправления в удобное место