.htaccess:隐藏URL变量

时间:2012-07-16 09:56:13

标签: php wordpress .htaccess

我不知道如何使用.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

我有网址

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

2 个答案:

答案 0 :(得分:0)

你有没有尝试过类似的东西:

RewriteEngine On 
RewriteRule ^project-detail/([0-9]+)$ project-detail/?pro_id=$1

答案 1 :(得分:0)

你可以尝试在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]

这会使它成为这样的网址: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这样的网址重定向http://localhost/my_site/project-detail/7?other=param。如果您根本不想要任何额外的参数,请从规则的目标中删除%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。