简单(?)htaccess重写问题

时间:2010-07-29 20:08:06

标签: apache .htaccess mod-rewrite url-rewriting

好吧我过去几天一直在搞乱URL重写,似乎已经走到了一个死胡同。我想出了一些可以在某些服务器而不是其他服务器上工作的解决方案,而我的托管公司(1和1 - 如果你选择它们作为主机,则会对这些人保持警惕)根本无法提供帮助。

我的问题是,我想重写这个网址:

/result.php?section=[section name]&url=[url]

到此(如果没有,则添加尾部斜杠):

/article/[section name]/[url]/

和ALSO

section.php?section=[section name]

to(再次添加尾部斜杠):

/section/[section name]/

每次尝试似乎都有不同的结果。目前我正在使用以下,它在本地工作,但在实时服务器上只有'文章'重写工作:

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /article/$1/$2/
RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /result.php?section=$1&url=$2

RewriteRule ^section/([a-zA-Z0-9_-]+)$ /section/$1/
RewriteRule ^section/([a-zA-Z0-9_-]+)/$ section.php?section=$1

任何人都可以帮我提出一个可以很好地运作的解决方案吗?提前谢谢你,我真的很挣钱似乎相对简单的事情......

1 个答案:

答案 0 :(得分:3)

首先,为了强制反斜杠,你需要实际重定向......

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /article/$1/$2/ [R=302,L]
RewriteRule ^section/([a-zA-Z0-9_-]+)$ /section/$1/ [R=302,L]

注意:我使用302因为301在测试过程中会很痛苦,一旦一切正常并且您满意,就将其更改为301。

剩下的两个规则是简单地掩盖/别名query_string URL的重写,它应该看起来像这样......

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /result.php?section=$1&url=$2
RewriteRule ^section/([a-zA-Z0-9_-]+)/$ /section.php?section=$1