htaccess重写正则表达式问题

时间:2014-04-18 18:27:18

标签: regex .htaccess

我当前的网址是:

http://www.domain.com/param1/ID

但我需要以下网址来显示我当前网址的内容:

http://www.domain.com/param2/param1/ID-page-name

因此,当加载包含此URL的页面时:

http://www.domain.com/param2/param1/ID-page-name

此网址的内容应显示:

http://www.domain.com/param1/ID

基本上剥离了param2page-name

以下代码在htaccess文件中不起作用:

RewriteCond %{REQUEST_URI} ^/([^/]*)/param1/([^/]*)
RewriteRule ^/([^/]*)/param1/([^/]*)$ /param1/$2

请帮忙。

编辑:看起来此行RewriteEngine On导致500服务器错误。不知道它可能是什么。 ModRewrite已启用httpd.conf

编辑2 :我当前的htaccess文件:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
</IfModule>
<IfModule mod_headers.c>
    <FilesMatch "\.(jpg|jpeg|png|gif|swf|ico)$">
        Header set Cache-Control "max-age=2592000, public"
    </FilesMatch>
</IfModule>

redirect /url1 http://www.domain.com/url2


#RewriteEngine On

当我取消注释最后一行RewriteEngine On时 - 发生500错误。

2 个答案:

答案 0 :(得分:0)

尝试:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^/]+/([^/]+)/([^-]+)- /$1/$2 [L]

答案 1 :(得分:0)

这应该有效:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/param1/([0-9]+)-(.*)$ /param1/$2 [L]