2015-03-31 47 views
0

你好,我目前使用wampserver和這段代碼來刪除文件擴展名。我是否還需要刪除每個href中的擴展名才能使htaccess正常工作?

Options -MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

是的,它工作,但我有很多的PHP文件。有沒有一種方法可以自動刪除文件擴展名,而無需從hrefs中刪除它,如<a href="index.php"> to <a href="index">?而且我也有像http://www.whatever.ph/index.php?pid=51這樣的鏈接,我希望它能像http://www.whatever.ph/index/51或什麼是更好的鏈接

+0

可能重複http://stackoverflow.com/questions/10507754/need-help-writing-url-rewrite-rule-regular-表達式爲php和htaccess) – 2015-03-31 02:57:55

回答

0

你可以做一些全局搜索/替換來擺脫所有的.php擴展名。你真的想要改變你的HTML鏈接,否則你需要創建mod_rewrite規則來重定向瀏覽器,以查找每一個有擴展名或者看起來很難看的鏈接的請求。

Options -MultiViews 
RewriteEngine On 

RewriteCond %{THE_REQUEST} \ /+([^\?]+)\.php\?pid=([0-9]+) 
RewriteRule^/%1/%2? [L,R] 

RewriteCond %{THE_REQUEST} \ /+([^\?]+)\.php(\ |$) 
RewriteRule^/%1 [L,R] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^([^\.]+)/([0-9]+)$ /$1.php?pid=$2 [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
的[求助編寫URL重寫規則正則表達式PHP和htaccess的(
+0

你好,我用你的htaccess和測試它的2個PHP文件。 第一個是test.php,然後是output.php 在test.php中,代碼僅爲 TEST LINK,而在output.php中,代碼僅爲<?= $ GET ['pid']; ?>。網址變爲http:// localhost/test/output/5,但它給出了錯誤404 在此服務器上找不到請求的URL /tests/output/5.php。 – FewFlyBy 2015-03-31 04:43:25

+0

@FewFlyBy因爲你現在在URL中有更多的斜線,你需要使用絕對URL:'',因爲斜槓改變了相對URL的基礎。 – 2015-03-31 04:51:55

相關問題