2015-08-16 151 views
2

如何刪除PHP擴展和隱藏網址使用htaccess的文件參數從網址上Godaddy的Linux主機 htaccess的GoDaddy的Linux的URL URL參數。隱藏PHP擴展和使用託管

我正在使用此代碼。

​​

該代碼可用於擴展少網址運作良好(URL沒有.PHP)當我使用的url沒有鍵入URL PHP擴展。但是當我在URL中使用.php時,它顯示的網址爲php擴展

的事情,我想: -

  1. ,當我使用的URL與PHP擴展在瀏覽器中,.PHP將自動從鏈接中刪除。
  2. 我想這個URL(ab.example.com/profile.php?user=some_user)轉換爲ab.example.com/profile/some_user,當帶參數的用戶類型的網址,然後鏈接也將自動轉換爲ab.example.com/profile/some_user
  3. 當URL外觀和數據一個多像URL(ab.example.com/profile.php?user=some_user&ref=23&go=set)轉換成ab.example.com/profile/some_user/23/set

回答

2

.htaccess只處理內部重寫URL。您在瀏覽器中看到的網址不會更改,除非您使用實際的重定向。

做到這一點的一種方法是「如果請求的URL包含.php,刪除它並重定向」。這將是(未經測試!)

RewriteCond %{REQUEST_FILENAME} \.php$ 
RewriteRule ^(.*)\.php$ /$1 [QSA,R=301] 

R=301強制瀏覽器重定向到新的URL,這將出現在瀏覽器地址欄更新。

這就是說,你應該仔細考慮你的設置。在我的項目中,URL很少匹配真實文件名,而是被重定向到index.php,它根據請求的URL的內容選擇如何操作。這對用戶沒有提供任何關於如何組織我的文件的提示。

編輯:如果你想更高級的編輯,你將不得不在PHP本身做到這一點,並使用它header("Location: ".$new_url_here); - 這將允許您將用戶重定向到您選擇的規範URL。

+0

請給我完整的htaccess代碼 –

+1

@KunwarAsifAliKhan號我不是在這裏爲你做你的整個工作。無論如何,這是免費的。 –

0

我用這種方式:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 
如果運行

的print_r($ _ GET),你會看到$ _GET [ '網址']這將是的index.php後部分,或任何你將使用的文件

我正在使用控制器,或者你可以在profile.php中使用重定向,通過探索參數並根據需要設置路由。

在你的情況

RewriteRule ^(.*)$ profile.php?user=$1 [L,QSA] 

和任何將遵循profile.php被保存在「用戶」變量,然後,你需要它,你可以解析它,處理。

編輯:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ profile.php?user=$1 [L,QSA] 

在輸入網址的情況下:

http://domain.com/profile/myname/12

你會得到profile.php $ _GET [ '用戶'] = 'MYNAME/12';

你可以解析它作爲:

$url = explode('/', $_GET['user']); 
$url[0] = 'user'; 
$url[1] = '12'; 

if(!empty($url[0])){ 
//do whatever you want 
} 
... etc 

同樣是其中的URL較長,與你想使用的所有變量。 我希望這會幫助你。

+0

請給我完整的htaccess代碼 –

+0

@KunwarAsifAliKhan,我更新了代碼 –