htaccess重写url删除htm扩展名

时间:2013-04-03 13:44:16

标签: apache .htaccess

我有以下网站结构

- root 
    - de/
    - en/

每个文件夹都包含一些.htm文件。 E.g

en/products.htm

的灵感
mysite.com/en/products.htm 

我想在网址栏中显示

mysite.com/someEnglishTitle/products

实际上我想用一些字符串来替换语言键。我的htaccess看起来像这样

RewriteEngine On
RewriteBase / 
RewriteRule ^/?$ /en/index.htm [L,R]

我添加了

RewriteRule ^/english-books/products$ /en/products.htm [L,R]

但这不起作用。任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

在这种情况下不要使用[L,R] L表示Last,因此在此之后不再应用规则 R表示重定向,但如果URL要保留在浏览器中,您不希望发生这种情况

所以

RewriteRule ^english-books/products$ /en/products.htm

意味着http://mysite.com/english-books/products将显示文件en / products.htm的内容而不更改浏览器中的URL。请注意,开头没有尾部斜杠

答案 1 :(得分:0)

您的意思是想要将/$var1/$var2重写为/$var1/$var2.htm,然后尝试以下内容:

RewriteCond %{REQUEST_URI} ^/([a-z0-9-_]+)/([a-z0-9-_]+)/?$
RewriteRule ^(.*) /%1/%2.htm