我原本想讓所有我的網址都以無擴展名結束。不幸的是,我已經嘗試了很多htaccess代碼,而我剛剛放棄了。如何將沒有擴展名的所有網址重定向到以.php結尾
所以現在我希望把它因此,如果一個人想在我的網站訪問一個頁面,但忘記輸入.PHP,他/她將被自動重定向到相同的URL,但要以.php
這怎麼辦?謝謝!
我原本想讓所有我的網址都以無擴展名結束。不幸的是,我已經嘗試了很多htaccess代碼,而我剛剛放棄了。如何將沒有擴展名的所有網址重定向到以.php結尾
所以現在我希望把它因此,如果一個人想在我的網站訪問一個頁面,但忘記輸入.PHP,他/她將被自動重定向到相同的URL,但要以.php
這怎麼辦?謝謝!
試試這個的.htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
RewriteRule ^([^\.]+)$ $1.php [L]
編輯:^([^\.]+)$ $1.php [L]
下面是規則:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1.php [L,QSA]
它會檢查,如果請求的資源是不存在的文件夾。例如:您要求http://www.example.com/help
。如果存在這樣的文件夾(/help
),則該規則將不執行任何操作(優先考慮文件夾)。 如果你不希望這種行爲,那麼刪除第一行。
它會在重寫之前檢查是否有這樣的.php文件。例如:您請求http://www.example.com/aboutus
,但那裏沒有aboutus.php
文件 - 不會發生重寫。
所有這些要求應該沒有斜線:應該是http://www.example.com/aboutus
和NOT http://www.example.com/aboutus/
規則將子文件夾中的網址以及工作:例如http://www.example.com/pages/help/aboutus
將被重寫得很好。
由於上述檢查規則將不會進入一個重寫環(500號錯誤此規則)
查詢字符串(頁面參數)將被保留
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase/
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule^%1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule^%{REQUEST_URI}.php [L]
作爲對Sun Love的迴應,您發佈的代碼運行良好,除非您有一個沒有文件擴展名的尾部斜線(我收到500錯誤),因爲第一個RegEx與此情況不匹配。
example.com/test.html - 作品(重定向到/測試)
example.com/test - 作品(無重定向)
example.com/test.html - - 作品(重定向到/測試)
示例。COM /測試/ - 不起作用(500錯誤)
有可能是一個更好的辦法做到這一點,但我又增加了重寫條件,解決這個問題:
RewriteEngine on
Options +FollowSymLinks -MultiViews
RewriteBase/
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+).php
RewriteRule^%1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)/\s
RewriteRule^%1 [R=301,L]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]
我已經開始我的htaccess與 RewriteEngine敘述代碼上 RewriteBase/ 會影響我其他htaccess的代碼,如果我在開始時添加選項+的FollowSymLinks?如果是,我該怎麼辦? – user758287
我不認爲它會影響您當前的.htaccess。 它指定的Apache是否應該遵循符號鏈接,而尋找一個文件。 例如,如果你有一個文件 '/家庭/ MYDOMAIN/WWW/myfile.html' 這是 '/首頁/ mydomain的鏈接/ somedir/therealfile.html' 然後Apache將只檢索REALFILE .html如果你有這個選項啓用。你試一試。在[http://www.maxi-pedia.com/FollowSymLinks](http://www.maxi-pedia.com/FollowSymLinks) –
嗯,我只是試圖重寫規則^(。*)$ $ 1.PHP [L更多信息]沒有選項,我得到了500錯誤。我添加選項+的FollowSymLinks和我仍然有一個500錯誤。嗯,: -/ – user758287