感謝您的幫助,我可以創建一個.htaccess,將動態鏈接重寫爲靜態鏈接。現在我想將該解決方案擴展到整個站點,以便根據$ _get變量加載準確的模塊。然後感謝.htaccess我應該能夠做出友善的鏈接。唯一的問題是...它不工作...它顯示我一個錯誤:使用htaccess創建seo友好鏈接時出現403錯誤
403禁止 您沒有權限訪問此文檔。
我使用這個腳本重寫鏈接:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /mod1/
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/mod1/index.php\?module=([^\s&]+) [NC]
RewriteRule^/mod1/%1? [R=302,L]
# internal forward from pretty URL to actual one
RewriteRule ^mod1/([^\s&]+)?$ mod1/index.php?module=$1 [L,QSA]
現在我使用的文件夾MOD1但通常我想有就有一個域名,以便它具有:
www.domain.com/index.php?module=create_list
被重定向到:
www.domain.com/create_list
我在網上發現了一個信息,我應該將目標文件(這是我的例子中的索引)的權限更改爲755,但在我的情況下不起作用。 該腳本的另一個祕密是第一部分似乎工作,但我不知道爲什麼它總是在最後給出url「/」,即使我沒有在規則中定義它。
任何幫助表示讚賞。
編輯:
我設法解決與商場更改腳本問題:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /mod1/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/mod1/index.php\?module=([^\s&]+) [NC]
RewriteRule^%1.html? [R=302,L]
# internal forward from pretty URL to actual one
RewriteRule ^([^/]+).html?$ index.php?module=$1 [L,QSA]
據工作poperly。但我仍然不明白幾件事情。首先,如果我從刪除#:
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
的[L,QSA]起作用但permament [R = 302,L]不,我明白,這兩個線是用於與該PHP中使用的文件文件,他們解決了路徑問題。但是,如何讓他們一起工作,永久重定向302?
第二件事是我需要在靜態鏈接的末尾添加.html,這不是我計劃的一部分。是否有可能使它沒有.html擴展名的工作?
嘿,謝謝你的答案,但遺憾的是它並沒有解決我的問題,因爲現在它不重寫的URL。另外我有一個url ..mod1/index.php?module = create_list,但它不顯示正確的內容。這似乎是PHP不接收GET變量。 – user1857756 2014-10-19 20:59:02
我剛剛編輯了我的答案。爲什麼你需要將/mod1/index.php?module = something'重定向到'/ mod1/something'? – 2014-10-20 05:57:07
我想將動態鏈接重定向到靜態以避免重複的內容,以防有人使用這種方式訪問它 - 至少這是我的假設。這是錯的嗎?我用你的代碼,不幸的是,它仍然沒有解決問題仍然鏈接:[鏈接](/ MOD1 /東西)給我403錯誤 - 「禁止 - 你沒有權限訪問這個文件」(我已經把它在文件夾mod1中)。是否有可能在index.php中包含來自不同文件夾的文件中的錯誤與php相關?因爲我想出了爲什麼這個「簡單」重定向不起作用的想法... – user1857756 2014-10-20 16:06:57