2010-09-14 84 views
0

正如标题所说,我该如何使用.htaccess和mod_rewrite来改变它?mod_rewrite +“pages/123/some-text” - >“showpage.php?index = 123&title = some-text”

“页/ 123 /一些文本” 到 “?showpage.php指数= 123 &标题=一些文本”

我已经开始用这样的:

RewriteEngine On 
Options +FollowSymLinks 
RewriteBase/

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

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

回答

1

你可以只提取URL的相关部分在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个状态如果重定向是永久性的):

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

另外,如果你想要的标题块是可选的,你也可以这样做:

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

是的,我希望外部重定向而不是内部使链接在页面上与浏览器的角度相对于/而不是/页面/。谢谢! – Dmi 2010-09-14 22:03:29