.htaccess создать удобный для пользователя URL и переадресовать на него

0

Я попытался найти всюду по этой проблеме, но я ничего не нашел.

Я хочу сделать make url seo friendly, поэтому я использовал этот код:

RewriteEngine on    
RewriteRule ^Homepage index.php [NC,L]

Затем я хочу перенаправить его, поэтому я попытался написать этот код:

RewriteRule ^index.php$ http://localhost/siti/socialmark/Homepage [R=301,L]

Ошибка - это цикл перенаправления, может кто-нибудь мне помочь?

ИЗВИНИТЕ ЗА МОЙ ПЛОХОЙ АНГЛИЙСКИЙ!

  • 0
    да, это бесконечный цикл Homepage > index.php > Homepage.index.php > ... так что, может быть, просто удалите второе правило? использовать PHP для перенаправления в удобное место
  • 0
    если вы переписываете URL только для поисковой системы, не беспокойтесь
Показать ещё 1 комментарий
Теги:
.htaccess
seo

1 ответ

0
Лучший ответ

Правила перезаписи не просто заставляют строку 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

  • 0
    ах, так я не могу перенаправить на созданное правило?
  • 0
    Вы можете перенаправить на URI с помощью правила, но проблема в том, что правило выполняется при каждом запросе страницы, поэтому оно перенаправляет снова. Вот почему есть петля. Вам нужно условие, которое говорит: «Не запускайте это правило, если запрашивается правильный URI». Я обновил ответ выше с помощью примера и ссылки на документацию .htcaccess RewriteRule .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню