0

我想这样当我输入http://website.com/5/sometitle时它会打开 /displayvideo.php?id=5&title=sometitle,这目前适用于以下代码

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]

但是,这最终会导致一堆奇怪的废话,例如无法打开实际文件,例如 /somefile.php,因为它会认为 somefile.php 应该是 rewriterule 的 id 标签

这样做也会导致其他重写规则变得无效,因为它会自动认为 /displayvideo.php?id=$1 是新规则的标记。

基本上网站上的每个页面都会变成 500 内部服务器错误

任何人都知道如何解决这个问题?谢谢

4

2 回答 2

1

这应该这样做。

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]
于 2012-05-29T16:11:05.943 回答
0

优化您的正则表达式:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([0-9]+)$ /displayvideo.php?id=$1 [L]
RewriteRule ^([0-9]+)/(.*)$ /displayvideo.php?id=$1&title=$2 [L]
于 2012-05-29T16:10:34.563 回答