使用htaccess

时间:2016-09-13 13:34:51

标签: php apache .htaccess sed preg-replace

旧网站有以这种形式的网址:

www.oldwebsite.com/something-d801.htm 
or www.oldwebsite.com/something-something-806.htm

我想在最后一个短划线后删除部分,因为没有最后一部分我有与新网站(www.newwebsite.com/something)相同的网址。我宁愿在php路由器中这样做,但我认为htaccess版本总体来说更合适。

我想应该有类似于regexp的东西,但我发现的只是在最后一次斜线后删除所有内容的行:

  

您可以使用sed -e 's/\(.*\)\/[^\/]*/\1/g'

但是因为我对htaccess了解不多,所以我不知道哪条斜线应该在这一行中用破折号表示。

此外,这是我目前的htaccess:

SetEnv APPLICATION_ENV development

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [L,R]

RewriteRule ^$ public/ [L,QSA]
RewriteRule ^(.+)$ public/$1 [L,QSA]

# EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 7 days"
</IfModule>
FileETag MTime Size
# EXPIRES CACHING ##

2 个答案:

答案 0 :(得分:1)

这应该相当简单,将其添加到第一个# EXPIRES CACHING ##

之上
RewriteCond %{REQUEST_URI} html?$
RewriteRule ^(.+)-([^-]+)$ $1 [L,QSA]

答案 1 :(得分:0)

万一你打开awk:

grep

Awk解决方案:

echo $url
www.oldwebsite.com/something-something-806.htm