【发布时间】:2011-11-30 15:49:58
【问题描述】:
我想使用 mod_rewrite 将一些人性化的 URL 重写到名为 php 的文件夹中的任意文件(它位于 web 根目录内,因为 mod_rewrite 显然不会让您重写到 web 根目录之外的文件) .
/ --> /php/home.php
/about --> /php/about_page.php
/contact --> /php/contact.php
这是我的重写规则:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^$ php/home.php [L]
RewriteRule ^about$ php/about_page.php [L]
RewriteRule ^contact$ php/contact.php [L]
但是,我还想阻止用户直接访问此php 目录中的文件。如果用户输入以/php 开头的任何 URL,我希望他们获得404 页面。
我尝试在最后添加这个额外的规则:
RewriteRule ^php php/404.php [L]
...(其中 404.php 是一个输出 404 标头和“未找到”消息的文件。)
但是当我访问 / 或 /about 或 /contact 时,我总是被重定向到 404。似乎最终的 RewriteRule 甚至适用于内部重写的 URL(因为它们现在都以 @987654330 开头@)。
我认为[L] 标志(在前三个 RewriteRules 上)应该阻止应用进一步的规则?难道我做错了什么? (或者有没有更聪明的方法来做我想做的事情?)
【问题讨论】:
标签: apache mod-rewrite