Apache重写规则删除部分URL及其后的所有内容

时间:2017-08-05 20:21:51

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

在过去的几个小时里,我尝试过几十个例子,无法得到理想的结果,所以我显然遗漏了一些东西和/或做错了什么。

很遗憾地问这么一个基本问题和其他许多人一样......

我希望能够做的就是从所有网址中删除'/ book-now'(如果存在)并删除其后的所有内容。

例如:

  

/类别/类型/书现在/ 13

     

/类别/类型/书现在/ 13-当然标题-示例

     

/类别/类型/书现在/ 13-当然标题-示例/ 23311-当然实例-在此结果位置的示例

应该全部重写(和301重定向)到:

  

/类别/类型

'category','type','13','course-title-example','23311','course-instance-in-this-location-example'都是变量。

如此通用的例子是:

  

/ [前] /书现在/ [后]

应该简单地成为:

  

/ [前]

没有必要专门处理查询字符串,因为没有任何查询字符串,即如果它们存在则可以丢失它们。

2 个答案:

答案 0 :(得分:0)

试试这个:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !(.*)book-now 
RewriteRule ^(.*)$ book-now/$1 [L]

或者这个:

RewriteEngine On
RewriteRule ^/book-now/(.*)$ http://www.example.com/$1 [L,R=301]

答案 1 :(得分:0)

这最终成为了我实现目标的代码:

RewriteEngine On
RewriteRule (.*)/book-now /$1 [R=301,L]