.htaccess MOD_rewrite для всего сайта

#apache #.htaccess #mod-rewrite

#apache #.htaccess #mod-перезапись

Вопрос:

У меня есть сайт, который находится под www.domain/store

Я хочу избавиться от хранилища, используя MOD_rewrite для всего сайта.

Возможно ли это сделать с помощью mod_rewrite??

Сайт построен на Opencart.

Я попробовал то, что было предложено ниже: я получаю внутреннюю ошибку сервера, поэтому я просмотрел журнал ошибок Apache, и ниже приведены ошибки:

 [Sun Oct 23 03:02:09 2011] [error] [client 120.144.194.243] File does not exist: /home/favstayc/public_html/404.shtml
[Sun Oct 23 03:02:09 2011] [error] [client 120.144.194.243] File does not exist: /home/favstayc/public_html/favicon.ico
[Sun Oct 23 03:02:09 2011] [error] [client 120.144.194.243] client denied by server configuration: /home/favstayc/public_html/error_log
[Sun Oct 23 03:02:09 2011] [error] [client 120.144.194.243] client denied by server configuration: /home/favstayc/public_html/.htaccess
  

Хорошо, теперь я получил свой ответ. Ниже приведен ответ!

 Options  FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !(.*)store
RewriteRule ^(.*)$ store/$1 [L]
  

Ответ №1:

Довольно просто, используя этот шаблон, все перенаправляется /store/whatever невидимо для пользователя. Итак, ваш пользователь входит http://example.com/some-product , и Apache обслуживает пользователя http://example.com/store/some-product .

 RewriteEngine On
#RewriteCond %{REQUEST_URI} !^store.*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /store$1 [L,QSA]
  

Комментарии:

1. Я не хочу, чтобы магазин отображался в URL. Возможно ли это?

2. Это именно то, что делает это правило. Если вы не добавите [R], флаг не будет перенаправлять браузер пользователя.

3. @hybmg58 Проверьте ваш журнал ошибок Apache, чтобы узнать, в чем ошибка. Также см. Дополнение RewriteCond выше.

4. ХОРОШО, теперь я получаю эту ошибку: на этой веб-странице есть цикл перенаправления

5. @hybmg58 Смотрите дополнение, которое проверяет, является ли запрошенный элемент реальным файлом (т. Е. Он существует в store каталоге). Если это произойдет, перезапись не произойдет, поэтому вы не получите цикл.