0

我正在一个设置为将页面加载为的网站上工作http://domain.tld?p=pagename,并且我希望这些页面可以通过http://domain.tld/pagename(仅仅是因为它更短且更容易引导人们访问)。

我知道这可以用mod_rewritein来完成.htaccess,但是在服务器方面我有点不适应。这是可取的,如果是,它是如何完成的?

(哦,主页没有查询字符串,只是http://domain.tld- 我不希望这破坏它。)

4

1 回答 1

1

自从我玩 apache 配置以来已经有一段时间了,但你想要这样的东西:

RewriteEngine  on
RewriteRule    ^/([^/])/?  ?p=$1 

第一部分是一个正则表达式,第二部分是一个替换,就像你在 perl 的s/foo/bar/构造中找到的一样(但当然与 perl 有一些不同,因为正则表达式的实现总是略有不同)。

这将不匹配http://domain.tldhttp://domain.tld/因为([^/])不满足,而不是可选。正则表达式的/?末尾是平等地处理http://domain.tld/pagenamehttp://domain.tld/pagename/如果你想这样做)

请注意,如果在查询字符串上传递了其他参数,我上面的代码不一定有效,但您没有要求...

您应该知道,随着页面开始具有额外的查询字符串参数或您想要的/area/pagename等,URL 重写可能会变得非常复杂。这种增加的复杂性最终会导致您花费大量时间阅读此页面:

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

也许值得……只有你知道那个问题的答案g :)

于 2013-03-01T00:11:33.520 回答