Mod_Rewrite如何忽略不属于url字符串的斜杠

时间:2017-10-31 12:57:47

标签: apache .htaccess mod-rewrite url-rewriting

我试图在论坛中设置规范链接,我需要提出一个重写规则,忽略不属于URL的斜杠。

正确的网址如下:

  

http://www.truckingtruth.com/truckers-forum/Topic-20315/Page-1/speak-to-recruiter

为此,我使用以下mod_rewrite规则来传递'主题','页面'和' subjectString'变量:

  

^主题 - (。*)/页面 - (。*)/(。*)$ index.html?topic = $ 1& page = $ 2& subjectString = $ 3

但是,有时我们网站的不正确链接或评论中的不正确链接会为不属于该网址的网址添加斜线,并且会抛弃该规则。例如:

  

http://www.truckingtruth.com/truckers-forum/Topic-1652/Page-1/www.truckingtruth.com/free_truck_driving_schools/swift/how-to-use-the-qualcomm

当发生这种情况时,传递的变量是:

  

topic =" 1652"

     

page =" 1 / www.truckingtruth.com / free_truck_driving_schools / swift"

     

subjectString ="如何使用高通"

我想要它做的是传递:

  

topic =" 1652"

     

page =" 1"

     

subjectString =" www.truckingtruth.com/free_truck_driving_schools/swift/how-to-use-the-qualcomm"

如何创建一个重写规则,将在" Page-1"之后传递所有内容。作为subjectString,即使它有斜杠?

1 个答案:

答案 0 :(得分:0)

由于topic始终是整数,因此对于您的第一个捕获组,您可以使用匹配任何十进制数字的\d(相当于[0-9])。

对于page,请确保不要包含任何斜杠,[^/]将处理此问题。 其余的应该全部转到第三个捕获组,因此产生的正则表达式将是:

^Topic-(\d*)/Page-([^/]*)/(.*)$