2015-05-04 2 views
1

Вот мой текущий файл .htaccess:RewriteRule не работает, но другие?

Options +FollowSymlinks 
Options -Indexes 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^feature/$   /items/feature [L] 
RewriteRule ^feature$   /items/feature [L] 
RewriteRule ^top_sellers/$  /items/top_sellers [L] 
RewriteRule ^top_sellers$   /items/top_sellers [L] 
RewriteRule ^support/$   /contacts [L] 
RewriteRule ^support$   /contacts [L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

Все правила перезаписи работают на них, кроме:

RewriteRule ^support/$   /contacts [L] 
RewriteRule ^support$   /contacts [L] 

Я не понимаю, почему mysite.com/support будет показывать страницу 404, когда все другие перенаправления работают правильно. Кроме того, когда я перехожу к mysite.com/contacts, ошибки 404 нет - он правильно загружает страницу.

Есть ли причина, по которой перенаправление с support в URL-адресе не будет работать по какой-то нечетной причине на сервере cPanel?

ответ

0

Ваши правила могут быть консолидированы совсем немного, но также сообщить Apache, чтобы убедиться, что это не файл или каталог перед обработкой правила. Попробуйте эти правила.

Options +FollowSymlinks -Indexes -Multiviews 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(feature|top_sellers)/?$ /items/$1 [L,NC] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^support/?$ /contacts [L,NC] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 
0

Вместо этих 2 правил, вы можете использовать этот единственное правило

RewriteRule ^support/?$ /contacts [NC,L] 

косую черту в конце URL-адрес не является обязательным в этой схеме. и будет принят URL-адрес, заканчивающийся или без косой черты (/).

+1

Кроме того, могут быть объединены первые четыре правила: 'RewriteRule^(feature | top_sellers) /? $/Items/$ 1 [NC, L]' –