mod_rewrite-添加中间层目录


mod_rewrite - add middle tier directory

页面目前可在以下地址使用:

http://www.domain.co.uk/solutions/article/page-name1
http://www.domain.co.uk/solutions/article/page-name2
http://www.domain.co.uk/solutions/article/page-name3
etc

但我希望它们可以通过以下地址访问,以便增强SEO:

http://www.domain.co.uk/solutions/page-name1
http://www.domain.co.uk/solutions/page-name2
http://www.domain.co.uk/solutions/page-name3

因此,我想我想在站点根的.htaccess文件中使用mod_rewrite,在每个传入页面请求的solutions目录之后添加"article"目录。大约一个月以来,我一直在寻找一个合适的答案,我试着学习mod_rewrite基础教程,但我无法完成这项工作,所以很抱歉再问一个mod_rerite问题。

这是我目前的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    # Removes index.php
    RewriteCond $1 !'.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
    # If 404s, "No Input File" or every URL returns the same thing
    # make it /index.php?/$1 above (add the question mark)      
</IfModule>

我正在我的一个网站上做类似的事情。以下是我用来删除index.php并显示缩短后的url的.htaccess规则:

RewriteEngine On
# Removes index.php
RewriteCond $1 !'.(css|js|gif|jpe?g|png|ico) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1
RewriteCond %{REQUEST_URI} ^/solutions/(.*) [NC]
RewriteRule ^(.*) /solutions/article/%1 [L]

请记住,您在浏览器地址栏中看到的URL不是ExpressionEngine看到的URL——EE将{segment_2}视为"文章"。

编辑:

试试这个:

<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteCond %{REQUEST_URI} !^solutions/article/ 
RewriteRule ^solutions/(.*)$ /solutions/article/$1 [L,QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !'.(gif|jpe?g|png)$ [NC] 
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>