我見過幾個答案,但他們都沒有爲我工作。難以使用.htaccess重寫網址
如何使用我的.htaccess
重寫下面的內容? mod_rewrite在我的文件中。
http://example.com/local/vendor/index.php?handle=Company
是:
http://example.com/local/vendor/Company
我見過幾個答案,但他們都沒有爲我工作。難以使用.htaccess重寫網址
如何使用我的.htaccess
重寫下面的內容? mod_rewrite在我的文件中。
http://example.com/local/vendor/index.php?handle=Company
是:
http://example.com/local/vendor/Company
如何改寫下面...
這裏有可能是一個更根本的問題。你不要重寫這樣在.htaccess
。您將從「朋友」URL重寫爲回到實際的URL /文件系統路徑。所以,這是反過來,你重寫來自:
http://example.com/local/vendor/Company
到您的應用程序期待實際的URL:
http://example.com/local/vendor/index.php?handle=Company
例如:
RewriteEngine On
RewriteRule ^(local/vendor)/(Company)$ /$1/index.php?handle=$2 [L]
$1
和$2
是反向引用到RewriteRule
模式中的被捕獲組。
上面的內容只是你說的具體的URL,即。 /local/vendor/Company
。我懷疑「公司」是想成爲一個佔位符?在這種情況下,你需要使這個更一般。例如:
RewriteRule ^(local/vendor)/(\w+)$ /$1/index.php?handle=$2 [L]
\w
是單詞字符的簡寫字符類。這不包括點(即.
),因此在重寫爲index.php
時避免了重寫循環。
UPDATE:以上假定您的.htaccess
文件位於文檔根目錄,即。 example.com/.htaccess
。但是,如果.htaccess
文件位於/local
子目錄(即example.com/local/.htaccess
。) - 當你出現在意見建議 - 那麼你就需要調整上述指令從RewriteRule
模式刪除local/
和刪除斜槓前綴替代。例如:
RewriteRule ^(vendor)/(\w+)$ $1/index.php?handle=$2 [L]
感謝您的快速回復。我試過這個,但它仍然不起作用。也許我應該說「本地」是我的文檔根。這會改變什麼嗎? 當我在瀏覽器中鍵入http:// localhost/local/vendor/Company時,它給了我404。它將替換爲供應商處理 404我得到的是「在此服務器上找不到所請求的URL /本地/供應商/公司」。 – greeves
術語問題的位數我認爲......如果「本地」是您的_document root_(我的意思是您的「文檔根目錄」),那麼它根本就不在您的URL中。 (文檔根目錄是定義公共文件根目錄的文件系統路徑 - 它是服務器配置中的配置指令。)如果「本地」僅僅是您從中提供文件的子目錄,並且是該目錄的位置。 htaccess'文件,那麼你應該從上面的指令中刪除'local /'。 – MrWhite
我已經更新了我的答案。 – MrWhite
您需要**嘗試自己編寫代碼**。在[**做更多的研究**之後](https://meta.stackoverflow.com/q/261592/1011527)如果你有問題**發佈你已經嘗試了**的**明確的解釋不工作**並提供[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。閱讀[如何問](http://stackoverflow.com/help/how-to-ask)一個很好的問題。請務必[參觀](http://stackoverflow.com/tour)並閱讀[this](https://meta.stackoverflow.com/q/347937/1011527)。 –
周杰倫 - 我是新手編程,我只是想得到答案,所以我可以得到一個網站的生活。我期待像你這樣的評論。感謝任何可以提供的幫助。 – greeves
[參考:mod \ _rewrite,URL重寫和「漂亮鏈接」可能的重複解釋](https://stackoverflow.com/questions/20563772/reference-mod-rewrite-url-rewriting-and-pretty-links-explained ) –