我正在使用mod_rewrite将“url.com/foo”等网站重写为“url.com/index.php?site=foo”。
守则:
RewriteEngine On
RewriteBase /
RewriteRule ^([0-9a-zA-Z]+)$ index.php?site=$1
如果我点击一个带有href =“/ foo”的链接,它会给我
http://url.com/foo/?site=foo
代码在同一个V-Server上的其他站点工作,我安装了Boilerplate,但我现在不使用它的.htaccess来修复mod_rewrite,所以它不能成为样板问题,或者?
我也尝试了以下代码:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ index.php?site=$1
该代码至少会重写为index.php?site = foo 但它仍然会创建url,就像上面的例子一样,文件夹之间有不必要的文件夹。
编辑:确保每个人都理解整体想法:
文件基于http://url.com(index.php,.htaccess),因此我将RewriteBase设置为“/”。 它应该采取像
这样的链接http://url.com/foo
并将其重写为
http://url.com/index.php?site=foo
没有包含文件夹。
答案 0 :(得分:1)
我解决了,该死的我太愚蠢了;)
我有一个名为url.com/foo/
的文件夹,并且重定向的链接为url.com/foo
到url.com/index.php?site=foo
,所以它总是试图进入该文件夹。由于我重命名了该文件夹,因此效果非常好。
答案 1 :(得分:0)
我在RewriteRule上收到类似的错误消息
pcfg_openfile: unable to check htaccess file, ensure it is readable
我也有与重定向的URL部分类似的子文件夹名称,但重命名它并没有解决问题(正如Chris所建议的那样)。
多次尝试后,通过将子文件夹权限更新为755(使用cPanel文件夹权限对话框)解决了问题:
User: Read, Write, Execute
Group: Read, Execute
World: Read, Execute
PS:我不确定在重命名之前和之后是否实际需要重命名子文件夹,错误消息是相同的。