mod_rewrite +“pages / 123 / some-text” - > “showpage.php指数= 123&安培;标题=一些文本”

时间:2010-09-14 21:51:39

标签: mod-rewrite

正如标题所说,我如何使用.htaccess和mod_rewrite来改变它?

“页/ 123 /一些文本” 至 “showpage.php指数= 123&安培;标题=一些文本”

我从这开始:

RewriteEngine On
Options +FollowSymLinks 
RewriteBase /

RewriteCond %{REQUEST_FILENAME} pages/(.*)
RewriteRule (.*) /showpage.php?index=%1 [R]

这允许我至少获取索引的参数,但是除非我创建一个名为pages的空目录,否则会失败。

1 个答案:

答案 0 :(得分:1)

您只需在RewriteRule本身中提取网址的相关部分:

RewriteEngine On
Options +FollowSymLinks 
RewriteBase /

RewriteRule ^pages/([^/]+)/(.+)$ /showpage.php?index=$1&title=$2 [R]

请注意,R标志会导致外部重定向,这是您想要的吗?如果没有,你应该删除它:

RewriteRule ^pages/([^/]+)/(.+)$ /showpage.php?index=$1&title=$2

或者,如果您确实需要外部重定向,为了安全起见,最好使用L标志,以便立即应用重定向(如果重定向是永久性的,则添加301状态):< / p>

RewriteRule ^pages/([^/]+)/(.+)$ /showpage.php?index=$1&title=$2 [R=301,L]

此外,如果您希望标题片段是可选的,您也可以这样做:

RewriteCond &title=$3 ^(&title=.+)$
RewriteRule ^pages/([^/]+)(/(.+))?$ /showpage.php?index=$1%1