2013-02-05 148 views
0

我想将网址从http://domain.com/index.php?section=abc重定向到http://domain.com/abc - 没有任何结尾斜线。 并在同一时间,我想避免直接夹的访问htaccess - 重定向domain.com/index.php?a=b到/ b

的第二件事情正常工作与下面的代码:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)/$/[R=301]  

但是当我尝试的第一件事情不能正常工作:

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

如果你能帮助我解决这个“小问题”,我会很高兴。 顺便说一下 - 是否可能应用这两个函数,并添加第三个重定向/重定向/ abc/abc ...?

谢谢:)

回答

0

将流量发送到index.php文件:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?section=$1 [L] 

这将发送对不上文件系统中存在的index.php文件的请求。这样你的图片,CSS等不会被重定向。这也意味着如果你有一个静态文件需要提供服务,你只需将它放在你的服务器上即可。

我不完全确定你想要禁用直接文件夹访问意味着什么。你的意思是人们只能通过浏览文件夹来查看文件夹中的文件?如果是这种情况,您需要禁用索引。

Options -Indexes 

你还应该确保你有一个包含index.php的DirectoryIndex设置。像这样的东西是常见的:

DirectoryIndex index.php index.html index.htm 

如果这些文件中的任何文件存在于没有文件名的文件夹中,它将被渲染。

看看Apache手册,了解有关这些选项的详细信息: