首先:阅读文档!你可以在这里找到它。
它说:
Syntax: RewriteRule Pattern Substitution [flags]
和
在 VirtualHost 上下文中,Pattern 最初将与 URL 的主机名和端口之后以及查询字符串之前的部分进行匹配(例如“/app1/index.html”)。
在 Directory 和 htaccess 上下文中,Pattern 最初将与文件系统路径匹配,在删除引导服务器到当前 RewriteRule 的前缀之后(例如“app1/index.html”或“index.html”,具体取决于指令的位置定义)。
如果您希望匹配主机名、端口或查询字符串,请分别使用带有 %{HTTP_HOST}、%{SERVER_PORT} 或 %{QUERY_STRING} 变量的 RewriteCond。
(换句话说:如果在 .htaccess 上下文中,以斜杠开头的模式将永远不会匹配)
首先,确保 mod_rewrite 已启用并且 rewriteengine 已打开(放入RewriteEngine on
您的 .htaccess)并允许在那里(请参阅文档)。
假设这是.htaccess
在您的 www-root 中,这应该可以工作:
RewriteRule ^pubs/books/P(.*)\.asp$ books.php?p=$1 [L]
语法^...$
确保这是整个文件系统路径。我们不想在http://example.com/some/more/paths/pubs/books/P123.asp
这里匹配并重写它。