【问题标题】:.htaccess: Hide URL variables.htaccess:隐藏 URL 变量
【发布时间】:2012-07-16 09:56:12
【问题描述】:

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

【问题讨论】:

标签: php wordpress .htaccess


【解决方案1】:

你有没有尝试过这样的事情:

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

【讨论】:

  • URL 重写不会改变你的源代码,你必须修改你的 URL 显示方式
【解决方案2】:

您可以尝试在 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&amp;other=param 这样的 URL 被 重定向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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2013-08-19
    • 2014-06-22
    相关资源
    最近更新 更多