只是一个快速的,我正在使用这个规则,它工作正常:
RewriteRule ^([^/.]+)$ /profile.php?id=$1
所以无论是什么来mysite.com/anything将被视为mysite.com/profile.php?id=anything 这一切都很好。
然后我需要添加另一个变量,所以我使用了:
RewriteRule ^([^/.]+)/([^/.]+)$ /profile.php?id=$1&vid=$2
哪种工作但它不加载任何css,js,外部php ... 我猜这就是为什么它在不同的文件夹中查找,我不知道怎么告诉它从根文件夹中获取其他文件。
有什么想法吗?
答案 0 :(得分:2)
那是因为您正在使用htaccess创建虚拟文件夹。如果您想正确加载CSS和JS,请使用绝对路径或在相对路径之前添加 ../ (这意味着“一个文件夹”)。
另一种可能性是添加<base href="www.example.com">
。这将导致所有新请求(对于图像,外部文件等)相对于该路径,而不是当前地址。
答案 1 :(得分:1)
您可以添加
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
如果存在具有此URL的文件,则不重写URL
答案 2 :(得分:1)
在RewriteRule
之前添加下两行RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]