2015-01-22 3 views
2

Как я могу сделать как переписывающие работы, например http://example.com/something.htmlhttp://example.com/videos/something/1.html всегда совпадает с download.php, но не с video.php.Htaccess переписывает аналогичные шаблоны

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
RewriteBase/
RewriteRule ^category/(.+)$ category.php?q=$1 
RewriteRule ^videos/(.+)/(.+).html$ video.php?q=$1&page=$2 
RewriteRule ^(.+).html$ download.php?id=$1 

ответ

2

Вы можете иметь эти правила как:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L,NE] 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^category/(.+)$ category.php?q=$1 [L,QSA,NC] 

RewriteRule ^videos/([^/]+)/([^/.]+)\.html$ video.php?q=$1&page=$2 [L,QSA,NC] 

RewriteRule ^(.+)\.html$ download.php?id=$1 [L,QSA,NC] 
+2

Как для пропуска файлов раздела. – IdidntKnewIt

+0

Внутренняя ошибка сервера Сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и не смог выполнить ваш запрос. Обратитесь к администратору сервера на веб-сервере @, чтобы сообщить им о времени возникновения этой ошибки и действиях, выполненных перед этой ошибкой. Дополнительная информация об этой ошибке может быть доступна в журнале ошибок сервера. – IdidntKnewIt

+0

За какой точный URL вы получаете эту ошибку 500? Я тестировал это на своем Apache и не обнаружил ошибок. – anubhava

1

Попробуйте это:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
RewriteBase/
RewriteRule ^category/(.+)$ category.php?q=$1 
RewriteRule ^videos/(.+?)/(.+?).html$ video.php?q=$1&page=$2 
RewriteRule ^(.+).html$ download.php?id=$1 

+ жадный оператор. Вот почему download.php всегда соответствовал.