我在本地主机上使用重写引擎时遇到了一些问题。
我正在我的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
个链接
和所有其他人(例如/somepage
)到index.php?c=somepage
使用上面的.htaccess时,我首先得到500内部服务器错误。但是,当删除最后一次重写时,此错误就会消失。
删除最后一条规则后,另一个问题就出现了
当转到localhost/project1/profile
时,一切都运行得很好,但是当添加另一个参数时:localhost/project1/profile/5
我的所有css都消失了。
我的CSS包含如下:href="style/main.css"
因此该文件位于localhost/project1/style/main.css
现在我尝试通过添加/
来使路径相对
但是CSS根本没有应用,不在index.php
上,也不在project1/profile
对此有任何解决方案,以便我可以使用我的3条规则吗?
答案 0 :(得分: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规则,而不是更改所有网址。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*/style.css$ style.css [NC,L]
您必须将它放在.htaccess中的所有规则之前。