示例网址:
example.com/user
/ user既是符号链接目录,也是我网站上内容的有效URL。我使用Horde Routes来请求内容,所有对站点的请求都通过index.php。
我目前有一个.htaccess文件,如下所示:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
#allow cool urls
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]
#allow to have Url without index.php
但是转到/ user会列出目录内容而不是网页。是否可以忽略符号链接?
除此之外,如果您要求:
example.com/user/some-css-file.css
这是一个不应忽略的有效请求。那么是否可以通过符号链接来允许文件,但是基本的符号链接本身会被忽略并转到index.php?
谢谢:)
答案 0 :(得分:1)
忘记符号链接只需创建另一个RewriteRule。将它放在“允许酷网址”规则之前:
RewriteCond %{REQUEST_URI} ^/user/$
RewriteRule (.*) /index.php [L]
所以http://www.example.com/user/或http://www.example.com/user 应该转到内容。 [L]应防止进一步处理规则。
答案 1 :(得分:1)
!-d
的测试在请求/user/
时将失败,因为它实际上是现有目录。您可能希望在没有该条件的情况下使用它,并且只允许直接访问现有文件而不允许直接访问目录:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php [L]
此外,您可以将模式^(.*)
替换为!^index\.php$
,以便 index.php 的请求不需要文件系统查找:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]