我有一个形式的网址:
www.example.com/r/abc/1234
我想重写为:
www.example.com/r.php?deb=abc&id=1234
还有另一个网址:
www.example.com/r/12bcd-qsqs-343-wdwd/1234
应该重写为:
www.example.com/r.php?abc_id=12bcd-qsqs-343-wdwd&id=1234
这两个规则都应该由 .htaccess 处理。有什么建议么?
我有一个形式的网址:
www.example.com/r/abc/1234
我想重写为:
www.example.com/r.php?deb=abc&id=1234
还有另一个网址:
www.example.com/r/12bcd-qsqs-343-wdwd/1234
应该重写为:
www.example.com/r.php?abc_id=12bcd-qsqs-343-wdwd&id=1234
这两个规则都应该由 .htaccess 处理。有什么建议么?
尝试类似:
RewriteRule (.*)/(.*)/(.*)$ path_to_php_files/$1.php?deb=$2&id=$3 [QSA,L,NC]
不幸的是,使用此规则,您将始终拥有第一个 $_GET 参数,我希望您正确设置了 DirectoryIndex。我不认为这对于
www.example.com/r/abc/1234
www.example.com/r/12bcd-qsqs-343-wdwd/1234
如果您有动态链接,您可以将 abc 和 12bcd-qsqs-343-wdwd 传递给 2 个不同的 $_GET 参数。
您要重定向的两个 URI 看起来都相似,除了第二个-
在第一个查询参数中有连字符。
通过启用 mod_rewrite 和 .htaccess httpd.conf
,然后将此代码放在您.htaccess
的DOCUMENT_ROOT
目录下:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^r/([^-]+)/(.+)/?$ r.php?deb=$1&id=$2 [L,QSA]
RewriteRule ^r/([a-z0-9-]+)/(.+)/?$ r.php?abc_id=$1&id=$2 [L,QSA,NC]