RewriteRule不适用于多URL

时间:2015-11-05 14:24:58

标签: .htaccess

RewriteEngine On
RewriteBase /

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

RewriteCond %{THE_REQUEST} ^[a-zA-Z0-9-+/]{3,}\ /+company\.php\?title=([^\s&]+)
RewriteRule ^ %1? [R=301,L]

RewriteCond %{THE_REQUEST} ^[a-zA-Z0-9-+/]{3,}\ /+project\.php\?compname=([^\s&]+)&prjt=([^\s&]+)
RewriteRule ^ %1/%2? [R=301,L]

RewriteRule ^([^/]+)/?$ company.php [L]
RewriteRule ^([^/]+)/([^/]+)/?$ project.php [L]

我期望http://website.com/compname=Company&prjt=Project看起来像http://website.com/Company/Project。并且同样的方式是company.php页面。 Company.php页面按预期工作,但project.php页面无效。 Url按预期显示,但页面打开时出现完整错误。任何帮助都非常感谢?

2 个答案:

答案 0 :(得分:0)

如果您缺少样式和脚本,则问题很可能是您在内容中使用了相对链接。从

更改URL时
/project.php

 /company/project

任何相对网址都会从/更改为/company/,这显然不是您想要的。

将所有链接设置为以/开头的绝对网址,或者为网页标题添加基础:

<base href="/" />

答案 1 :(得分:0)

  

公司页面来到这里没有样式表(凌乱的样子)。

这就是我问你的问题。我们需要知道具体问题,因为错误打开与缺少样式表不一样。

通过在<head>部分添加此标记来修复样式表问题。

<base href="http://www.website.co" />

在你的html for CSS / JS等中使用这种类型的mod_rewrite和相对URL时会发生这种情况。