Переадресация .htaccess конфликтует с другим правилом htaccess, которое я не могу удалить - PullRequest
1 голос
/ 28 августа 2010

Информация:

Так что я довольно новичок в .htaccess и немного читаю.

В основном я хочу сделать это, перенаправить URL www.example.com / center-pro до www.example.com / pro-hq (см. Здесь .htaccess URL redirect )

Однако на сайте, на котором я работаю, уже есть файл .htaccess.

Это то, что я добавляю, делая:

Options +FollowSymLinks  #already in htaccess file
RewriteEngine On         #already in htaccess file

Redirect 301 /center-pro http://www.example.com/pro-hq    #line I added


RewriteCond %{REQUEST_FILENAME} !-f   #already in htaccess file
RewriteCond %{REQUEST_FILENAME} !-d   #already in htaccess file
RewriteRule ^(.*) index.php?idstring=$1&%{QUERY_STRING}   #already in htaccess file

Последняя строка, кажется, мешает моемуredirect

Таким образом, вывод моего перенаправления выглядит следующим образом: www.example.com / pro-hq? idstring = center-pro

Вопрос:

Есть ли способ использовать правило перенаправления выше и сохранить текущие .htaccees, чтобы я не испортил текущие настройки сайта.

** примечание: выполнение RewriteRuleработает, но я хотел бы использовать редирект, чтобы люди не указывали неправильный URL.

1 Ответ

1 голос
/ 28 августа 2010

Вы также можете использовать mod_rewrite для своего внешнего перенаправления:

RewriteRule ^center-pro$ http://www.example.com/pro-hq [R=301,L]

Это, вероятно, самое простое решение вместо вашего текущего Redirect.Проблема в том, что mod_rewrite выполняет свою работу до mod_alias, и хотя переписанный путь URI не передается, измененная строка запроса, к сожалению, такова.Вы также можете указать RewriteRule, чтобы он не обрабатывал путь, который вы хотите обработать с помощью mod_alias, но я предпочитаю первый вариант:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond ${REQUEST_URI} !^/center-pro
RewriteRule ^(.*) index.php?idstring=$1&%{QUERY_STRING}

Кроме того, для текущего RewriteRule вы можетепросто используйте флаг QSA вместо добавления строки запроса к URL-адресу вручную:

RewriteRule ^(.*) index.php?idstring=$1 [QSA]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...