2012-06-27 171 views
0

我试图解决没有.php扩展名的PHP页面请求。我实际上更喜欢没有文件扩展名的URL,但这不是现在最大的问题。问题是外部链接与当前配置有关:网络解决方案主机上的URL重定向

www。[domainname] .com/abc/forms返回自定义404页面。

www。[domainname] .com/abc/forms.php正确完成。

www。[domainname] .com/service解析为www。[domainname] .com。

www。[domainname] .com/abc的请求解析为正确的index.php,并且不会将URL重写为www。[domainname] .com/abc/index.php。

的目录结构大致是这样的:

  • [域名]
    • 的index.php
    • ABC
      • 的index.php
      • forms.php
      • 其他。 php
    • 高清
      • 的index.php
      • blah.php

这是我的htaccess文件。如果文件是.php文件,并且附加“.php”扩展名,则第二个块应该接受任何对文件有效的请求。它不这样做。第三块是我试图强制form.php页面的请求发生最常见的错误。这不起作用,但下面的行确实有效(上面提到)。最后,自定义404页面正在工作。

Options -Indexes 
Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^[domainname].com [NC] 
RewriteRule ^(.*)$ http://www.[domainname].com/$1 [L,R=301] 


RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 


RewriteRule ^abc/forms$ /abc/forms.php [L,R=301] 

RewriteRule ^service(.*)$/[L,R=301] 
ErrorDocument 404 /404.php 

我在这里错过了什么吗?谢谢。

+0

是'MultiViews'启用地方?你有没有尝试在你的选项中添加'-MultiViews'? –

+0

我没有指定MultiViews选项。 MultiView的显式设置(+/-)都不会影响这一点。 – Michael

回答

1

我相信RewriteBase是必要的,就像这样:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/