0

我在本地主机上使用重写引擎时遇到了一些问题。我正在我的www/project1/文件夹中的一个站点上工作,我正在尝试使用重写引擎。但是我遇到了一些问题:

首先这是我的 .htaccess 文件:

RewriteEngine On  

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^profile$ ./index.php?p=userprofile 
RewriteRule ^profile/(.*)$ ./index.php?p=userprofile&id=$1 [L]

RewriteRule $(.*)$ ./index.php&c=$1

基本上我想重写所有/profile链接以index.php?p=userprofile
重写所有/profile/5链接index.php?p=userprofile&id=5

和所有其他人(例如/somepageindex.php?c=somepage

使用上述 .htaccess 时,我首先会收到 500 Internal Server Error。但是,当删除最后一个重写时,这个错误就会消失。

删除最后一条规则后,另一个问题出现了当localhost/project1/profile一切正常但添加另一个参数时:localhost/project1/profile/5我所有的 css 都消失了。

我的 CSS 包括如下:href="style/main.css"

该文件因此位于localhost/project1/style/main.css

现在我尝试通过添加 a 来使路径相对,/ 但是 CSS 根本没有应用,不是 onindex.php也不是 onproject1/profile

有什么解决方案可以让我的 3 条规则生效吗?

4

1 回答 1

2

最后一条规则是错误的。

RewriteEngine on

RewriteRule ^profile$ index.php?p=userprofile [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^profile/(.*)$ index.php?p=userprofile&id=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?c=$1 [L]

关于 CSS,您必须使用绝对路径。所以你需要href="/project1/style/main.css"

您也可以为此使用 .htaccess 规则,而不是更改所有 url。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*/style.css$ style.css [NC,L]

您必须将它放在 .htaccess 中的所有规则之前。

于 2013-01-30T06:11:50.473 回答