У меня проблема с Apache, который не хочет читать мои директивы перезаписи и фактически переписывает свои URL-адреса на основе этих директив. У меня есть условия и правила, записанные прямо в мой файл Apache httpd.conf
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} Round_2
RewriteRule ^Round_2/(.*)$ /newBuyer/desktop/$1 [R=301,L]
RewriteCond %{REQUEST_URI} itemList
RewriteRule ^/?(.*)/itemList/(.*)$ /newBuyer/$1/search/$2 [R=301,L]
RewriteCond %{REQUEST_URI} eventDetail
RewriteRule ^/?(.*)/eventDetail/(.*)$ /newBuyer/$1/event/$2 [R=301,L]
</IfModule>
Я перезагрузил apache, используя:
$ apachectl -k graceful
очищенный кеш браузера, и перенаправление не работает. Я могу заставить его работать на моем локальном экземпляре Windows Apache, но не на моем экземпляре Cent7 Apache.
Я подтвердил, что мод перезаписи загружен.
После добавления тегов каталога после IfModule между условиями и правилами я смог заставить работать перезапись URL. Вот окончательный результат работы:
<IfModule mod_rewrite.c>
<Directory "/directory/to/designers/files/">
RewriteEngine On
RewriteCond %{REQUEST_URI} Round_2
RewriteRule ^Round_2/(.*)$ /newBuyer/desktop/$1 [R=301,L]
RewriteCond %{REQUEST_URI} itemList
RewriteRule ^/?(.*)/itemList/(.*)$ /newBuyer/$1/search/$2 [R=301,L]
RewriteCond %{REQUEST_URI} eventDetail
RewriteRule ^/?(.*)/eventDetail/(.*)$ /newBuyer/$1/event/$2 [R=301,L]
</Directory>
</IfModule>
Спасибо