.htaccess重写规则/

时间:2011-12-29 16:38:07

标签: .htaccess

我有一个网站,如果我转到网址http://mysite.com/community,则会显示找不到的网页。但是,URL http://mysite.com/community/正确显示页面。如何在社区之后为“/”设置重写?

这是我的礼物.htaccess:

Options +FollowSymLinks
Options +Indexes
RewriteEngine On

RewriteRule ^admin$ Admin/index.php?qstr=$1 [L]
RewriteRule ^(.*)/$ index.php?qstr=$1 [L]

这些是我尝试过的,但失败了

首先,

RewriteRule  ^(.*)/community $1/community/ [L]

第二

RewriteRule  /community /community/ [L]

全部使用有和没有[L]的不同组合。

2 个答案:

答案 0 :(得分:0)

来自Apache URL Rewrite Guide

  

落后斜线问题   说明:

     

每位网站管理员都可以唱一首关于引用目录的网址上的尾部斜杠问题的歌曲。如果它们丢失,服务器会转储错误,因为如果你说/ ~quux / foo而不是/ ~quux / foo /那么服务器会搜索一个名为foo的文件。因为这个文件是一个抱怨的目录。实际上它试图在大多数情况下修复它本身,但有时这个机制需要由你模仿。例如,在对CGI脚本等进行了大量复杂的URL重写之后。

     

解决方案:

     

这个微妙问题的解决方案是让服务器自动添加尾部斜杠。要正确执行此操作,我们必须使用外部重定向,以便浏览器正确请求后续图像等。如果我们只进行内部重写,这只适用于目录页面,但是当此页面中包含任何图像时会出错使用相对URL,因为浏览器会请求内联对象。例如,在没有外部重定向的情况下,对/~quux/foo/index.html中的image.gif请求将变为/~quux/image.gif!

所以,为了做到这一点,我们写道:

  

上的RewriteEngine      

RewriteBase / ~quux /

     

RewriteRule ^ foo $ foo / [R]

疯狂和懒惰甚至可以在他们的homedir的顶级.htaccess文件中执行以下操作。但请注意,这会产生一些处理开销。

  

上的RewriteEngine      

RewriteBase / ~quux /

     

RewriteCond%{REQUEST_FILENAME} -d

     

RewriteRule ^(。+ [^ /])$ $ 1 / [R]

答案 1 :(得分:0)

嗯,在尝试了所有上述解决方案以及我自己的一些解决方案之后,我终于解决了这个问题。我绝对相信这不是一个完整的解决方案,但它确实暂时解决了。

解决方案:刚刚在根文件夹中创建了一个名为“community”的空目录。就是这样!

但我仍然在寻找实际解决方案。