【问题标题】:mod URL rewrite is not workingmod URL重写不起作用
【发布时间】:2015-10-30 09:03:34
【问题描述】:

http://www.example.com/index.php?page=property_submit&edit=1&pid=978

我想把这个网址改写成

http://www.example.com/index/property_submit/1/978

我尝试使用以下代码重写,但它不起作用:

RewriteRule ^index/([a-zA-Z0-9_-]+)/([0-9]+)$ index.php?$1=$1

RewriteRule ^index/([a-zA-Z0-9_-]+)/([0-9]+)/$ index.php?$1=$1 [QSA]

完整代码如下:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) example.com/$1 [R=301,L]
RewriteRule ^index/([a-zA-Z0-9_-]+)/([0-9]+)$ index.php?$1=$1
RewriteRule ^index/([a-zA-Z0-9_-]+)/([0-9]+)/$ index.php?$1=$1 [QSA]

【问题讨论】:

  • “不工作”意味着什么?您的日志文件中有错误吗?是否重写到错误的位置?宇宙会内爆吗?
  • 网址没有改变..仍然显示旧网址
  • 你的日志文件呢?您的 http 服务器错误日志中有任何条目吗?
  • 没有产生错误日志
  • RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com RewriteRule (.*) example.com/$1 [R=301,L] RewriteRule ^index/([a-zA-Z0-9_-]+ )/([0-9]+)$ index.php?$1=$1 RewriteRule ^index/([a-zA-Z0-9_-]+)/([0-9]+)/$ index.php? $1=$1 [QSA]

标签: .htaccess mod-rewrite url-rewriting url-redirection friendly-url


【解决方案1】:

您必须处理原始请求以处理重定向:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^GET\ /index\.php\?page=([^\s&]+)&edit=(\d+)&pid=(\d+) [NC]
RewriteRule ^ /index/%1/%2/%3? [R=301,L,NC]

RewriteRule ^index/([\w-]+)/(\d+)/(\d+)$ /index.php?page=$1&edit=$2&pid=$3 [L]

【讨论】:

  • 很遗憾地说伙计们..我的网站上没有任何工作
  • 你能帮我解决这个简单的网址吗
  • @JithuJohnson 是否在 apache 中加载了 mod-rewrite?上述规则仅适用于以下 URL:http://www.example.com/index.php?page=abc_wxyz&edit=xxx&pid=YYY
  • @JithuJohnson 您正在访问哪个页面,正在显示什么,会发生什么?您是否有权访问 httpd.confvhosts.conf 文件进行服务器配置?
【解决方案2】:

您的模式与您要重写的网址不匹配。

请考虑这个:

RewriteEngine on
RewriteRule ^index/property_submit/([0-9]+)/([0-9]+)$ index.php?page=property_submit&edit=$1&pid=$2 [L]

我认为匹配“property_submit”字符串会使您的策略更安全,因为您不匹配您可能想要重写的任意网址。

【讨论】:

  • @JithuJohnson 我还在研究这个模式。确定您尝试过当前版本?
  • 抱歉,当我尝试使用上面的示例 URL 时,该规则很好并且对我有用。我假设您的真实网址有所不同。
【解决方案3】:

根据您的要求,

http://www.example.com/index.php?page=property_submit&edit=1&pid=978

我想把这个网址改写成

http://www.example.com/index/property_submit/1/978

试试下面的代码,

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) example.com/$1 [R=301,L]
RewriteRule ^index/([a-zA-Z0-9_-]+)/([0-9]+)/([0-9]+)$ index.php?page=$1&edit=$2&pid=$3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2017-08-31
    相关资源
    最近更新 更多