【发布时间】:2017-10-04 21:30:14
【问题描述】:
我正在尝试从
重新路由本地 wordpress 实例(由 MAMP 运行)上的所有流量localhost:8080/mydomain 到 localhost:8080/mydomain/dashboard 有一个例外。如果 URI 有这样的查询参数,我不想重新路由它:
localhost:8080/mydomain/?post_type=ignition_product&p=23&preview=1 。查询参数p会发生变化。
我已阅读此In Depth Guide to mod-rewrite,但我仍然遇到问题。
我已经尝试过了,但我认为这是非常错误的:
// done by wordpress
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /mydomain/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /fundblack/index.php [L]
// added by me
RewriteCond ...need help here trying to ignore if there are query params...
RewriteRule ^mydomain/?(\w+)$ - [L]
RewriteRule ^mydomain/$ mydomain/dashboard
</IfModule>
# END WordPress
更新
Albert 的回答非常有效。现在我实际上将网站托管在服务器上。域名地址是这样的:
subdomain.subdomain.mydomain.com
只是这样做了,但它不起作用:
RewriteBase /
RewriteCond %{REQUEST_URI} !^/dashboard.* [NC]
RewriteCond %{REQUEST_URI}%{QUERY_STRING} !^/post_type=ignition_product&p=.*&preview=1$ [NC]
RewriteRule ^(.*)$ dashboard/$1 [R=301,L]
可能是什么问题?
【问题讨论】:
-
你能给我们精确的匹配标准吗 param1=2¶m2=3 是 param1 和 param2 总是一样的,值呢?如果您说重新路由,您的意思是重定向(URL 将在浏览器中更改)或重写(URL 保持不变)但在内部其他一些目录正在处理请求?
-
@Webdesigner 我添加了参数。其中之一会改变。我实际上想重定向到另一个地址而不是重写 url。
-
但它总是排在第二位,对吧?而dashboard是mydomain的一个子文件夹,安装了wordpress的东西?
-
是的,是的
-
查询参数会改变还是查询参数的值会改变?例如 post_type=other_product&t=23&preview=5 如果你有 localhost:8080/mydomain/foo 这也应该去 localhost:8080/mydomain/dashboard/foo
标签: apache .htaccess mod-rewrite mamp