mod_rewrite - 包含2个变量的错误

时间:2011-08-17 10:32:31

标签: php apache .htaccess mod-rewrite

只是一个快速的,我正在使用这个规则,它工作正常:

RewriteRule ^([^/.]+)$ /profile.php?id=$1

所以无论是什么来mysite.com/anything将被视为mysite.com/profile.php?id=anything 这一切都很好。

然后我需要添加另一个变量,所以我使用了:

RewriteRule ^([^/.]+)/([^/.]+)$ /profile.php?id=$1&vid=$2 

哪种工作但它不加载任何css,js,外部php ... 我猜这就是为什么它在不同的文件夹中查找,我不知道怎么告诉它从根文件夹中获取其他文件。

有什么想法吗?

3 个答案:

答案 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]