Разрешение конфликтующих правил перезаписи URL - PullRequest
1 голос
/ 20 сентября 2011

Я работаю над сайтом и столкнулся с большой проблемой:

  1. Мне нужен весь мой трафик http://www.example.com/ до http://example.com или http://www.example.com/folder/ до http://example.com/folder/

(Примечание: ключевая вещь здесь - это то, что он может работать с бесконечным количеством подпапок или страниц до одного и того же корневого домена)

  1. Я хочу переписать http://example.com/name на http://example.com/folder/page.php?page=$name, за исключением некоторых URL, таких как http://example.com/css, которые я укажу. На этот раз URL все еще показывает http://example.com/name, то есть страницу, которую вы посетили, но на самом деле страница была переписана. Это не похоже на первый сценарий, который изменяет URL в адресной строке.

Теперь вот что у меня есть:

<IfModule mod_rewrite.c>
   Options +FollowSymlinks
    Options -Multiviews
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

   RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
   RewriteCond %{REQUEST_URI} !^/(candidates|css|employers|layout|pics|securimage)/?$

   RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
   RewriteRule ^([^/]+)/?$ employers/page.php?page=$1 [L]
</IfModule>

Проблемы с тем, что у меня есть выше:

  1. Не перенаправляет http://www.example.com/ на http://example.com.

  2. Кажется, это хорошо переписать для http://www.example.com/name, но когда у меня есть URL с одним из исключений, таких как http://example.com/css, он изменяет URL-адрес на http://example.com/css/?page=css.

Пожалуйста, как мне это исправить.

Большое спасибо.

1 Ответ

0 голосов
/ 20 сентября 2011

Вы должны разделить свои условия и правила перезаписи:

Для субдомена www:

RewriteCond %{HTTP_HOST} ^www.example.tld$
RewriteRule ^(.*) http://example.tld/$1 [QSA,R=301]

, затем для перенаправления QSA, кроме случаев, когда файл существует:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ employers/page.php?page=$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...