【发布时间】:2012-12-20 09:39:47
【问题描述】:
我正在尝试启用 Clean-Urls,启用 MultiViews。
我拥有的所有页面都在根文件夹本身中。
我正在努力实现以下目标:
(current-status -> what I am trying to achieve)
1. foo.com/services.php -> foo.com/services
2. foo.com/services == foo.com/services/
3. foo.com/services.php/second-level/ == foo.com/services/second-level
services是不是文件夹,我爆$_SERVER['PATH_INFO']得到二级路径数据。
我已经实现了第一个,但是当我启用MultiViews,使用.htaccess 文件并写入重写时它失败了。
Options +Indexes +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]
(这显然会失败,因为它会将请求更改为 services/second-level.php)。
我知道我可以在.htaccess 中编写多个重写,并有条件地重定向。
但奇怪的事实是,在实时环境(共享主机)上,它正在工作,没有根文件夹中的任何.htaccess 文件。由于是共享主机,无法读取配置文件。
关于我应该更改什么配置(apache.conf 或*.conf)以实现上述目标有什么想法吗?
如果重要的话,我使用的是Apache/2.2.22,这个问题在更新后开始出现。
【问题讨论】:
-
我不认为你想要这个:
foo.com/services.php -> foo.com/services,但是这个:foo.com/services -> foo.com/services.php。在浏览器的地址中显示一个“丑陋”的 URL 没有多大意义,其中资源显示为(foo.com/services.php),而隐藏“漂亮”的 URLfoo.com/services,除非有非常特殊的原因。 ¿ 有吗? -
@FelipeAlamedaA :我想要 Clean URL 本身。刚刚更新了问题以使其更清晰。
标签: php apache .htaccess mod-rewrite apache2