我在htaccess中无法正常使用正则表达式,我需要使用以下网址:
http://example.com/p/anything.aspx?id=1
并将其重定向到:
http://example.com/-/anything/1
我可以让它重定向到以下就好了,但是不能让它放弃?id =
http://example.com/-/anything/?id=1
我已经在regexr.com上测试了一些正则表达式,并且它们在那里工作得很好,但是当我实际将它放入我的.htaccess时它不起作用。你能给予的任何帮助都会令人惊叹!我可能会错过一些小而愚蠢的东西,只是在htaccess中使用正则表达式并不是那么好。
的.htaccess
RewriteEngine On
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
RewriteRule ^p/([^\.]+)[\?&](\w+)=(\w+) /-/example/$3 [L,R=301]
答案 0 :(得分:2)
您必须检查%{QUERY_STRING}才能捕获?id=xxx
此外,我优化了您的代码,您现在可以用这个替换当前的
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L,QSA]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L]
RewriteCond %{QUERY_STRING} ^id=([1-9][0-9]*)$ [NC]
RewriteRule ^p/(.+)\.aspx$ /-/$1/%1? [R=301,L]