從URL

2014-09-29 28 views
2

井中移出.PHP,我知道這是應該做的通過.htaccess進行 我的.htaccess是在我的網站的根目錄,這裏從URL

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

而且國防部重寫在我的服務器啓用了它的內容。 我有一個表單,其中有./getReadings.php。 但是,當我將其更改爲./getReadings它表示tehre不是服務器上的此類文件。我的錯誤是什麼?

+2

嘗試添加'選項-MultiViews'之前'RewriteEngine'指令 – 2014-09-29 09:52:14

+0

完美,被逼入擴展名相當於!發表一個答案 – 2014-09-29 09:53:56

回答

3

嘗試增加Options -MultiViewsRewriteEngine指令

Options -MultiViews 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ /$1.php [L,QSA] 

注:MultiViews是關於Apache內容negociation(其現在的問題是,因爲filename將自動翻譯爲filename.php現有的文件)。這就是爲什麼你必須禁用它。


編輯:現在,您可以通過2周不同的網址(帶或不帶php擴展名)訪問相同的內容。爲了避免重複的內容(這是壞的搜索引擎),你可以重定向擴展使用此代碼

Options -MultiViews 
RewriteEngine On 

RewriteCond %{THE_REQUEST} \s/(.+?)\.php [NC] 
RewriteRule . /%1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ /$1.php [L,QSA] 
0
RewriteEngine on 
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
    RewriteRule^%1 [R,L] 

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

請只避免發佈代碼。您還應該添加關於代碼的解釋。 – arco444 2014-09-29 10:23:27

0
Options -MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php