我試圖重寫 http://website.com/pages/blog.php?article=blog-entry,以便它可以 輸入爲http://website.com/pages/blog/blog-entry,但是當我嘗試以下方法我發現了一個 錯誤:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond
%{REQUEST_FILENAME}\.php -f
RewriteRule ^pages/blog/(.+)$ pages/blog/article.php?article=$1
[NC,L]
你的措辭是混亂,但我相信這是你的意思:
真實的網址是:http://website.com/pages/blog.php?article=blog-entry
您希望能夠使用'友好'網址:http://website.com/pages/blog/blog-entry指向真實網址。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^pages/blog/(.+)$ /pages/blog/article.php?article=$1 [QSA,L]
前兩個測試問:這是一個存在的目錄嗎?這是一個存在的文件嗎?因爲article.php是一個文件,所以它不會被包含在這個動作中,所以你不會進入一個無限循環,這對於重寫規則不正確的做法總會有風險。
取給定的url,並使用查詢字符串追加(QSA)將所需的數據附加到將處理請求的實際文件。這不是重寫,因爲用戶看到的url不會改變,這隻發生在apache內部,它會將請求發送到所需的目標,並具有所需的信息。
您必須測試文件或目錄是否存在,否則您會錯誤地應用此規則,因爲只應在目標不存在時應用該規則。基本上這就是所有博客/ CMS的搜索引擎友好型網站的工作方式,或多或少。
最後,由於目標是/blog.php?article=blog-entry,因此您不能跳過前導/。
然而,這是我不清楚爲什麼你要友好的URL要這麼長時間,什麼時候你可以讓它短,友好:喜歡,頁/ [文章名稱]
嗨,不,我要重寫/pages/blog/article.php?article=article-name到/頁/博客/文章名稱,這樣我就可以使用與_GET [「文章']在一個PHP查詢 – mckeegan375
是'/ pages/blog /'一個真實的目錄? – anubhava
是的,/網頁/博客都是真實的文件夾,所以也許只是/ article-name我想重寫到article.php?article = article-name? – mckeegan375