簡體   English   中英

htaccess重定向多個URL

[英]htaccess redirection of multiple URLs

我通常使用此站點來解決我的問題,但是第一次我找不到合適的問題,因此請原諒我!

目前,我有以下格式的有效網址:

http://www.example.com/index/modules/news/article.php?storyid=15807

末尾的數字是CMS動態生成的,因此對於發布的任何新內容都會更改。

為了使用較短的URL,我希望這些域可以通過以下格式的子域訪問:

http://news.example.com/n15807

請幫助我,讓我知道是否有更好的選擇,而不是使用htaccess。

當然! 您可以在apache的虛擬主機配置文件中使用mod_rewrite。

除了諷刺,重新路由URL的方法是使用接受URL並對其進行處理的工具,在典型的php安裝中,這是apache。 如果PHP能夠在不使用http服務器的情況下接受連接,則PHP可以做到。 我想一個人可以用php構建服務器並將其作為單例運行,但我從未聽說過這種事情。

因此,如果您了解要執行的操作,那么使用.htaccess和mod_rewrite並不難。 就您而言,您希望能夠將news.example.com/n15807轉換為真正長的uri。 真正長的uri是服務器將實際加載的內容。

mod_rewrite實際上與一個正則表達式匹配,並用另一個uri替換它。 因此,您將嘗試匹配^([^w]{3}).example.com/([az])([0-9]+)$並使用它替換/index/modules/$1/article.php?storyid=$3 (我不知道數字前面的n是什么意思。)

我提供的正則表達式僅用於指出正確的方向; 我還沒有測試。 [編輯-它絕對不會按書面形式工作; 自從我從事mod_rewrite以來已經有一段時間了。 但是這個想法仍然有效。 FWIW,不過,我不會嘗試使用子域]

摘要:使用適用於網址的工具。 最易訪問的方法是.htaccess。 一旦弄清楚,就完成了。 您可以在以后的網站中反復使用它。

經過數小時的搜索,我終於明白了!

RewriteEngine on
RewriteCond %{HTTP_HOST} ^news.example.com$
RewriteRule ^news/(.*)$ http://www.example.com/index/modules/news/article.php?storyid=$1\#siteBody [R=301,L,NE]

以為這有一天可能會幫助某人不花我那么多時間!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM