0

Я хотел бы сделать это так, чтобы, когда я вхожу http://website.com/5/sometitle открывает /displayvideo.php?id=5 & название = sometitle, это в настоящее время работает со следующим кодомmod_rewrite правила перекрывающихся

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)/(.*)$ /displayvideo.php?id=$1&title=$2 [L] 

Однако Я хотел бы также сделать так, чтобы, когда я иду в http://website.com/5 он будет идти к /displayvideo.php?id=5 Я попытался это путем добавления

RewriteRule ^(.*)$ /displayvideo.php?id=$1 [L] 

однако, что только заканчивается с кучей странного дерьма, как неспособного en фактических файлов, например, /somefile.php, так как он будет считать, что файл somefile.php должен быть тегом id в rewriterule

Выполнение этого также приводит к тому, что другое правило перезаписи становится недействительным, поскольку оно автоматически думает /displayvideo.php ? id = $ 1 является тегом нового правила.

В основном каждая страница на сайте будет ошибка 500 внутренний сервер

Каждый знает, как это исправить? Благодаря

ответ

2

Это должно сделать это.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9]+)/(.+)$ /displayvideo.php?id=$1&title=$2 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9]+)$ /displayvideo.php?id=$1 [L] 
+0

Работает отлично, спасибо ^^ – user1071461

1

Уточните RegExp годы:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^([0-9]+)$ /displayvideo.php?id=$1 [L] 
RewriteRule ^([0-9]+)/(.*)$ /displayvideo.php?id=$1&title=$2 [L]