.htaccess重写URL的一部分

时间:2015-10-11 03:40:19

标签: .htaccess mod-rewrite url-rewriting

我有两个要求:

  1. 我想在网址中将component/testcomp重写为comp
  2. https://www.website.com/component/testcomp应该看起来像: URL中的https://www.website.com/comp

    1. 所有来自website.com的请求都应该301重定向到https://www.website.com
    2. 以下是我的.htaccess文件的内容:

         IndexIgnore *
      
      Options +FollowSymlinks
      Options -Indexes
      
      
      RewriteEngine On
      
      RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
      RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
      RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
      RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
      RewriteRule .* index.php [F]
      
      
      RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
      RewriteCond %{REQUEST_URI} !^/index\.php
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule .* index.php [L]
      
      
      RewriteBase /
      RewriteCond %{HTTP_HOST} ^website\.com$ [NC]
      RewriteRule ^(.*)$ https://www.website.com/$1 [R=301,L]
      

      我该怎么办?我尝试添加重写规则,但它无法正常工作。让我知道重写规则&amp;我应该把它放在哪里。

2 个答案:

答案 0 :(得分:0)

重写&#34; / component / testcomp&#34;只是&#34; comp&#34;,我认为你必须用R标记它,或使用R = 301使它成为永久性的。但我觉得你可能不得不调整其他规则。

RewriteRule ^component/testcomp/(.*)$ /comp/$1 [L,R]

或使其永久化:

RewriteRule ^component/testcomp/(.*)$ /comp/$1 [L,R=301]

答案 1 :(得分:0)

尝试以下方法:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ /component/test(comp)(\S*) [NC]
RewriteRule ^ /%1 [R=301,L,QSA]

然后,

RewriteRule ^comp(.*)$ /component/testcomp$1 [QSA,NC,L]