2012-06-27 164 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/