1

通常,访问我的网站会透明地qpcftw.cu.cc加载页面,而不会在 url 中显示部分。我一直在尝试摆脱使用 .htaccess 的扩展。这是我的 .htaccess 文件的内容:qpcftw.cu.cc/index.php/index.php.php

<Files />
ForceType application/x-httpd-php
</Files>

RewriteEngine on
RewriteBase /

RewriteRule ^.htaccess$ - [F]

RewriteRule ^([A-z,0-9,_,-]+)?$              $1.php     [QSA]
RewriteRule ^([A-z,0-9,_,-]+)/index\.html$    $1.php     [QSA]

ErrorDocument 403 php/error.php
ErrorDocument 404 /404.php
ErrorDocument 405 php/error.php
ErrorDocument 408 php/error.php
ErrorDocument 500 php/error.php
ErrorDocument 502 php/error.php
ErrorDocument 504 php/error.php

我需要满足 3 个标准:

  1. qpcftw.cu.cc/index.php==qpcftw.cu.cc/index
  2. 访问qpcftw.cu.cc/forum/仍然加载我的 PHPBB 论坛qpcftw.cu.cc/forum/index.php
  3. qpcftw.cu.cc透明地加载index.php文件,而不在 URL 中显示

到目前为止,我当前的 .htaccess 满足了前两个需求,但打破了第三个需求。帮助!:/

4

2 回答 2

1

与其一味的加.php,不如先检查一下.php文件是否存在

RewriteCond $1.php -f 
RewriteRule ^([A-z0-9_-]+)?$              $1.php     [L,QSA]

RewriteCond $1.php -f
RewriteRule ^([A-z0-9_-]+)/index\.html$    $1.php     [L,QSA]

这仍然适用于 1 和 2,并且 3 现在也适用,因为代码将测试 index.php.php 是否存在(请求是针对 index.php),它不存在(我希望!),所以 RewriteRule 将失败。

我还从正则表达式类中删除了逗号(你不能用它们来表示几个组,把它放在那里只是意味着 URL 中允许使用逗号),并将 [L]ast 标志添加到规则中以获得更好的性能

于 2013-05-12T21:48:55.943 回答
1

以下 .htaccess 代码自动执行所有扩展隐藏魔术:

Options +MultiViews
于 2013-05-17T02:01:15.473 回答