将网站从IIS迁移到Apache,我在使用RewriteRule时遇到问题我无法找到答案。
我需要从www.domain.com/pubs/books/P123.asp
重定向到www.domain.com/books.php?p=P123
。
无论我尝试什么,我都会得到404.
有人可以给我指针吗?我似乎发现的所有示例都在最后有动态部分的URL。我首先需要剥离.asp吗?
Drupal也在这个网站上运行,因此有一些RewriteRules。
我尝试过的最新消息是:RewriteRule /pubs/books/P(.*)$.asp /books.php?p=$1
答案 0 :(得分:0)
首先:阅读文档!你可以找到它here。
它说:
Syntax: RewriteRule Pattern Substitution [flags]
和
在VirtualHost上下文中,最初将匹配模式 主机名和端口之后以及查询之前的URL部分 字符串(例如“/app1/index.html”)。
在目录和htaccess上下文中, Pattern最初将与文件系统路径匹配, 删除导致服务器到当前的前缀 RewriteRule(例如“app1 / index.html”或“index.html”取决于where 指令已定义。)
如果你想与之匹敌 主机名,端口或查询字符串,使用RewriteCond %{HTTP_HOST},%{SERVER_PORT}或%{QUERY_STRING}个变量 分别
(换句话说:如果在.htaccess上下文中,以斜杠开头的模式永远不会匹配)
首先,确保启用mod_rewrite并启用rewriteengine(将RewriteEngine on
放入.htaccess中)并允许其中(参见文档)。
假设这是在你的www-root中的.htaccess
,这应该有效:
RewriteRule ^pubs/books/P(.*)\.asp$ books.php?p=$1 [L]
语法^...$
确保这是整个文件系统路径。我们不希望在这里匹配http://example.com/some/more/paths/pubs/books/P123.asp
并重写它。