#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
каталоге). Если это произойдет, перезапись не произойдет, поэтому вы не получите цикл.