我不知道如何使用.htaccess文件来更改/隐藏URL 中的变量
我想使用WordPress的.htaccess文件我的.htaccess文件已经包含以下脚本:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /my_site/
RewriteRule ^index'.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /my_site/index.php
[L]
</IfModule>
# END WordPress
我有url
http://localhost/my_site/project-detail/?pro_id=7
并且我想像一样隐藏pro_id=7
http://localhost/my_site/project-detail/
但是可以在我的php脚本文件中捕获这个$_GET['pro_id']。
或
http://localhost/my_site/project-detail/7
我也试过
RewriteRule ^project-detail/(.*) /project-detail/?pro_id=$1
你试过这样的东西吗:
RewriteEngine On
RewriteRule ^project-detail/([0-9]+)$ project-detail/?pro_id=$1
您可以尝试将这些添加到RewriteBase /my_site/
指令之上,因为它们需要在wordpress内容之前。
首先,您可以直接访问实际请求以重定向到URL,而不需要查询字符串:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}' /my_site/project-detail/?'?pro_id=([^&' ]+)&?([^' ]*)
RewriteRule ^ /my_site/project-detail/%1?%2 [R=301,L]
这将使其成为这样一个URL:http://localhost/my_site/project-detail/?pro_id=7
被重定向到http://localhost/my_site/project-detail/7
,而像http://localhost/my_site/project-detail/?pro_id=7&other=param
这样的URL被重定向到http://localhost/my_site/project-detail/7?other=param
。如果您根本不想要任何额外的params,请从规则的目标中删除%2。这使得浏览器的地址栏更改为没有pro_id
查询字符串的URL。现在,我们必须在内部将其重写回查询字符串:
RewriteRule ^my_site/project-detail/([^/]+)$ /my_site/project-detail/?pro_id=$1 [QSA,L]
因此,在内部,URI被重写回/my_site/project-detail/?pro_id=7
,但浏览器的地址栏仍然有外观整洁的URL。