[英]Clean query strings urls with .htaccess
我需要有關該死的htaccess文件的幫助,RegEx只是讓我感到困惑,我無法處理基本的重定向,但是一旦它進入查詢字符串,我就會丟失它。
所以這是問題
我正在嘗試清理自己的網址,所以我想采用原始路徑:
http://localhost/webcampaign/projects/project.php?id=1917-Bungalow
並顯示出來
http://localhost/webcampaign/projects/1917-Bungalow
這是文件結構的照片,可以提供更好的主意
我將所有項目都設置成這樣的數組
$projects = array();
$projects["1917-Bungalow"] = array(
"name" => "1917 Bungalow",
"heroClass" => "hero-bungalow",
"mainImg" => BASE_URL ."images/bungalow_main.jpg",
"previewImg" => BASE_URL ."images/bungalow_preview.jpg",
"year" => "2013",
"yearClass" => "twenty13",
"location" => "Autstin, Texas",
"photographer" => "Rachel Cruz",
"detailOne" => BASE_URL ."images/bungalow_detail1.jpg",
"detailTwo" => BASE_URL ."images/bungalow_detail2.jpg",
"detailThree" => BASE_URL ."images/bungalow_detail3.jpg",
"detailFour" => BASE_URL ."images/bungalow_detail4.jpg",
"description" => "lorem ipsum and shit",
"detailOneSum" => "lorem ipsum",
"detailTwoSum" => "lorem ipsum",
"detailThreeSum" => "lorem ipsum",
"detailFourSum" => "Lorem ipsum",
"materials" => array("matOne","matTwo","matThree"),
"materialImg" => array(BASE_URL ."images/bungalow_mat1.jpg",BASE_URL . "images/bungalow_mat2.jpg",BASE_URL ."images/bungalow_mat3.jpg"),
"testamonialImg" => BASE_URL ."images/client.jpg",
"testamonial" => "Cabin Is Great!"
);
然后在project.php頁面中,使用
$project_id = $_GET["id"];
$project = $projects[$project_id];
那會影響什么嗎? 謝謝,我是這個新手
這是我最后一次嘗試重寫
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^project.php$ /projects/%1/? [R=301]
任何幫助,將不勝感激。 干杯
^
字符匹配路徑的開頭,但URL中的路徑以webcampaign
開頭而不是project.php
。
嘗試從RewriteRule
刪除^
。 我還認為您需要從重定向URL中刪除/projects/
,因為它看起來像是.htaccess所在的目錄。
RewriteEngine On
RewriteBase /webcampaign/
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule project.php$ projects/%1? [R=301]
編輯:
因此,根據您更新的問題,似乎您想要的是與請求相反的內容,因為重寫模塊僅重寫傳入的URL,而不是腳本輸出的URL。
第一件事是在HTML輸出中,將鏈接更改為要顯示的格式。 這就是評論者所說的“調整html頁面上的鏈接”的意思。
echo '<a href="http://localhost/webcampaign/projects/1917-Bungalow">1917 Bungalow</a>';
接下來,使用這些新的.htaccess
規則使用正確的id
參數將上述URL重寫到project.php頁面:
RewriteEngine On
RewriteBase /webcampaign/
RewriteRule projects/([A-Za-z0-9-]+)/?$ projects/project.php?id=$1 [NC,L]
將此代碼放在您的DOCUMENT_ROOT/.htaccess
文件中:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} \s/+(webcampaign/projects)/project\.php\?id=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(webcampaign/projects)/([^/]+)/?$ $1?id=$2 [L,QSA,NC]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.