RewriteRule:发生异常 - 删除一个参数

时间:2014-06-25 21:09:26

标签: php regex .htaccess mod-rewrite flags

我很抱歉这个"糟糕"标题,我试着解释一下:

我的.htaccess看起来像这样:

Options -MultiViews

RewriteEngine On

RewriteBase /mythbusters/tsp/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

# RewriteRule ^album/(.+)$ index.php?url=album/show/$1
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

此文件的最后一行非常有效。它允许将我的URL从 _ROOT_ / index.php?url = album / index 重写为 _ROOT_ / album / index (我用这个来处理那些参数和创建漂亮的URL。

虽然,我想做一个例外:

我的.htaccess文件中的超出注释的行是我无法重写特定网址的尝试之一。

使用.htaccess文件的最后一行,工作URL如下所示:

_root_身份/专辑/显示/ name_of_album 这是一样的 _root_身份/的index.php?URL =相册/显示/ name_of_album

现在,我想删除" show"这个网址的一部分,我尝试用

# RewriteRule ^album/(.+)$ index.php?url=album/show/$1

但是使用它,我站点中的每个其他路径都会发生变化,导致CSS文件加载失败(只是纯HTML,没有样式)。

此文件中是否有一些丢失的标记甚至是一些错误的正则表达式?

感谢您的帮助。

克里斯

1 个答案:

答案 0 :(得分:1)

有这样的话:

Options -MultiViews
RewriteEngine On
RewriteBase /mythbusters/tsp/

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]

RewriteRule ^album/(.+)$ index.php?url=album/show/$1 [L,QSA]

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

对于css / js / image问题:在css,js,images文件中使用绝对路径而不是相对路径。这意味着您必须确保这些文件的路径以http://或斜杠/开头。

您还可以尝试在页面的HTML标题中添加:<base href="/" />