2

示例网址:

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?

谢谢 :)

4

2 回答 2

1

忘记忽略符号链接,只需创建另一个 RewriteRule。将其放在“允许酷网址”规则之前:

RewriteCond %{REQUEST_URI} ^/user/$ 
RewriteRule (.*) /index.php [L]

所以http://www.example.com/user/http://www.example.com/user 应该去内容。[L] 应该防止进一步的规则被处理。

于 2009-11-21T12:33:49.923 回答
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]
于 2009-11-21T12:41:44.133 回答