htaccess - 删除url中唯一ID号后的最后一个段

时间:2016-09-02 12:31:28

标签: .htaccess mod-rewrite

如果在字符串后面有类似“/ UniqueID(仅限数字)/”的内容,例如:“/ 455 /”,在我的网址中,我想删除它。

以下是我现在在htaccess文件中的内容:

RewriteCond %{REQUEST_URI} m.*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^m(.*)$ articles.php?$1 [T=application/x-httpd-php,L]

(我想它增加了一个隐藏的扩展名“articles.php”。

所以,如果我的网址看起来像这样:

www.mondomaine.com/m/234/ - no change needed for the visible part

如果它看起来像这样:

www.mondomaine.com/m/121/some-title/ - I want to delete "some-title/"
www.mondomaine.com/m/121/ - result expected for the visible part

所以,我想我们必须找到“/ numberonly /”并删除它之后的所有内容,然后确保“articles.php”部分仍然存在。但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

  

(我想它会增加一个隐藏的延伸" articles.php"。

没有。

RewriteRule的地址以m(然后是任何内容)开头,并将其提供给articles.php page

所以:

输入(浏览器看到的内容):

  

m.domain/m/cheese/goats

输出(页面服务器实际加载):

  

m.domains/articles.php?/cheese/goats

从我对上一个问题的回答中可以看出:

 RewriteEngine On
 RewriteRule ^(m/[0-9]+)/(.*)/?$ [NC,L,QSA]

这将重写以m/(numbers)开头的任何网址,以便在数字后切断任何内容。

所以要在当前.htaccess中使用它:

 RewriteEngine On
 RewriteCond %{REQUEST_URI} m.* #optional. 
 RewriteRule ^(m/[0-9]+)/?(.*)$ /$1 [NC,L,QSA]

 RewriteCond %{REQUEST_URI} m.*
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^m(.*)$ articles.php?$1 [T=application/x-httpd-php,L]

现在: input = http://www.mondomaine.com/m/121/treesand-horses/

仅限第一部分的结果:(在浏览器中显示为重定向):
http://www.mondomaine.com/m/121

和第二部分(浏览器未见):

http://www.mondomaine.com/articles.php?/121