使用正则表达式和.htaccess和mod_rewrite清理URL

Hamid Joukar |

我在我的.htaccess文件中使用以下代码

RewriteRule ^([^/]*)/([^/]*)$ /view_basket.php?order_id=$1&pin=$2 [L]

目标是重定向一个干净的URL,如下所示

http://www.zire20.ir/77438/9512  

到这个

http://www.zire20.ir/view_basket.php?order_id=77438&pin=9512  

事情是它在我以前的服务器上可以正常工作,但是现在我改用了Godaddy主机,但它却无法正常工作!任何的想法 ?

ps:

我的整个.htaccess文件如下所示:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^zire20.ir [NC]
RewriteRule ^(.*)$ http://www.zire20.ir/$1 [L,R=301]
RewriteRule ^([^/]*)/([^/]*)$ /view_basket.php?order_id=$1&pin=$2 [L]
怀特先生

RewriteRule ^([^/]*)/([^/]*)$ /view_basket.php?order_id=$1&pin=$2 [L]
很多照片没有加载!

当前规则的问题是您无条件重写包含单个斜杠的所有URL都将被重写。我想象您的某些(静态)照片URL与此模式匹配。

通常的做法是仅在URL与现有文件(或目录)不匹配时重写URL:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ /view_basket.php?order_id=$1&pin=$2 [L]

这样可以确保仅针对不存在的文件(而不是文件或目录)重写请求。我还对模式进行了更严格的限制,因此在斜杠(+之前和之后必须有1个或多个字符,而不是0个或多个(*)。

事情是在我以前的服务器上工作的

除非以前的服务器上的URL结构不同,否则我看不到这是怎么可能的?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PHP和Javascript的正则表达式

来自分类Dev

使用日志(多行)和正则表达式

来自分类Dev

XSL使用匹配和正则表达式

来自分类Dev

使用egrep和正则表达式搜索数字

来自分类Dev

如何结合使用循环和正则表达式?

来自分类Dev

使用正则表达式提取问题和答案

来自分类Dev

使用正则表达式和javascript并获取变量

来自分类Dev

使用Powershell和正则表达式操作String

来自分类Dev

正则表达式使用逗号和句点Python

来自分类Dev

在ls和mv中使用正则表达式

来自分类Dev

使用jQuery和正则表达式进行验证

来自分类Dev

使用正则表达式和Grep转义*

来自分类Dev

使用正则表达式捕获前缀和后缀

来自分类Dev

使用PHP和Javascript的正则表达式

来自分类Dev

使用jQuery和正则表达式验证字段

来自分类Dev

使用正则表达式和特定路径查找

来自分类Dev

使用C ++正则表达式和太慢的结果

来自分类Dev

对rm和ls使用正则表达式

来自分类Dev

使用正则表达式复制和粘贴

来自分类Dev

如何在正则表达式中使用“[”和“]”

来自分类Dev

使用 .StartsWith 和正则表达式过滤列表?

来自分类Dev

复杂的使用正则表达式查找和替换

来自分类Dev

使用正则表达式和/或删除重复

来自分类Dev

正则表达式:(。*),(。*?)和。*

来自分类Dev

正则表达式和逗号

来自分类Dev

正则表达式和Tcl

来自分类Dev

&&和&的正则表达式

来自分类Dev

tonumber和正则表达式

来自分类Dev

变量和正则表达式