【问题标题】:mod-rewrite URL Changemod-rewrite URL 更改
【发布时间】:2009-05-25 00:33:19
【问题描述】:

当我更改设置时,我在玩画廊时遇到了问题。但是,我注意到错误有一个模式:

网址如下所示:
main.php/d/number/name.jpg

“数字”是动态的(即“9496-2”)
“name”是动态的(即“all+clad+7pc+b”)

其他一切都是静态的。

不幸的是,当我进行设置更改时,“数字”部分从“9496-2”变为“9495-2”。

如何从变量“数字”中减去值“1”?

杰夫

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    应该这样做。

    RewriteEngine On
    RewriteBase /
    RewriteRule ^photos/ebay/main.php/d/([0-9]*)6-([0-9]*)/(.*).jpg /photos/ebay/main.php/d/$1\5-$2/$3.jpg [QSA,L]
    

    我知道你说过你已经知道了,但这里有一个没有额外脚本的解决方案。 (我实际上测试了这个以确保 \5 有效)。

    【讨论】:

    • 感谢您的快速回复。 “9496-2”也是动态的。我想我需要在破折号处拆分该数字,然后从第一部分中减去一个?
    • 好的,应该这样做。 ($1) 可能不起作用,因为我以前从未尝试过,但这应该是一个简单的谷歌。
    • 使用“($1)”实际上是在变量两侧添加了 ()。
    【解决方案2】:

    你没有说你的网址的哪一部分是固定的,哪一部分是不同的,所以我只是猜测:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^/photos/ebay/main.php/d/9496-2/(.*)$ /photos/ebay/main.php/d/9495-2/$1 [QSA,L]
    

    如果您想将重定向发送回客户,您可能还想将R=301 添加到标志中。 (按原样,这应该只是做一个“内部重定向”)

    【讨论】:

    • 我能够在一个案例中使用它,只需稍作修改:RewriteRule ^main.php/d/9496-2/(.*)$ /photos/ebay/main.php /d/9495-2/$1 [QSA,L]
    【解决方案3】:

    这是有效的解决方案。它涉及使用 .htaccess 文件和 PHP 脚本。

    .htaccess 文件
    使用以下内容创建“.htaccess”文件:

    RewriteEngine On
    RewriteBase /
    
    # Redirect to PHP Script
    RewriteRule ^main.php/d/([0-9]*)-([0-9])/(.*)$ scriptName.php?v1=$1&v2=$2&v3=$3 [R=301,QSA,L]
    

    PHP 脚本:
    创建“scriptName.php”,然后添加您的逻辑。就我而言,我需要从 v1 中减去“1”。

    注意:确保 .htaccess 和 PHP 脚本在同一路径中。

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多