2012-01-18 67 views
3

我目前使用的.htaccess和PHP以下面的方式來解析網址:最有效的方法來編寫SEO友好的網址?

URL

http://blah.com/article/123_this-that-and-the-other 

的.htaccess

RewriteEngine On 
RewriteRule ^article/([0-9]+)_(.+)/?$ index.php?page=article&id=$1 [L] 

PHP

$page = isset($_GET['page']) ? safeGET($_GET['page']) : null; 
$id = isset($_GET['id']) ? safeGET($_GET['id']) : null; 
if ($page=='article') { include 'article.php'; } elseif { ... } 

我已經開始遇到在我的$ _GET請求中不喜歡「admin」這個詞的過於偏執的Mod_Security引擎的問題。但大多數情況下,我只是在尋找解析SEO友好URL的新技術。

任何人都知道更優雅的方法?

+0

我想你應該嘗試http://stellarbuild.com/blog/article/making-a-blog-url-seo-friendly-with-php它使用整個標籤來檢查數據庫。如果你只想使用一個整數,你的URL可以同時包含這兩個參數。 – msj121 2015-04-01 14:40:19

回答

3

您可以將整個查詢字符串作爲一個參數。

RewriteRule ^([^.]+)$ index.php?url=$1 [QSA,L] 

那麼可以拆分使用PHP的字符串和不同的參數轉換成一個數組做任何你喜歡用。

+0

是的,我之前嘗試過......它有點相同,無論.htaccess或php解析請求...我發現迄今爲止,它是一個更清潔(少代碼)使用.htaccess – neokio 2012-01-18 17:56:54

+0

這也提取每隔一個文件類型fe圖片。 – 2012-01-19 07:57:31

0

它被稱爲「路由器」。

參見Zend Controller Router f.e.

+0

謝謝,我還沒有看到呢!乍一看,它似乎極大地增加了所需的編碼量。我正在尋找方法來簡化事情。 – neokio 2012-01-18 17:59:59

+1

它是一個乾淨的方式,似乎更多的工作,但使用框架非常適合構建可靠的應用程序。重寫,您和Asa的重寫會產生雙重內容。 – 2012-01-19 07:45:04

+0

「double content」指的是'.htaccess'是否將URI元素複製到'$ _GET'超全局變量中?如果是這樣,我想我可能甚至不需要'$ _GET',當我可以簡單地用PHP解析'$ _SERVER ['REQUEST_URI']'...是不是Zend控制器路由器框架的作用? – neokio 2012-01-19 10:16:46