.htaccess重定向到.www,子文件夹,隐藏子文件夹和index.php

时间:2015-12-10 16:05:50

标签: apache .htaccess mod-rewrite

我想使用.htaccess将所有请求重定向到域的www.版本,以及存储在" new"中的文件。根目录的子目录。 然而,"新"应隐藏子目录以及URL中的任何index.php。这可能吗? 示例:http://mydomain.de/?x=100将指向http://www.mydomain.de/index.php?x=100,但仅在浏览器中显示http://www.mydomain.de?x=100

到目前为止,我尝试了

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.de$
RewriteRule ^new/index.php(.*)$ /$1 \
RewriteRule (.*) http://www.mydomain\.de/new [R=301,L]

但这不起作用。

使用最新代码编辑,我已注释掉导致服务器错误的行:

# add www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
# remove /new/ from URL
# RewriteCond %{THE_REQUEST} /new/(\S*)\s [NC]
# RewriteRule ^ /%1 [L,R=302]  
# remove /index.php from URL
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=302,NC]
# redirect everything to /new/
RewriteCond %{HTTP_HOST} !^/?$
RewriteRule ^((?!new).*)$ http://www.xn--krisen-lsen-yfb.at/new/$1 [L]
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule !^new/ new%{REQUEST_URI} [L,NC]

使用上面的htaccess代码," / new"和" index.php"仍留在网址中。此外,重定向到" www。"如果网址包含参数,则不起作用,例如" http://krisen-lösen.at/new/index.php/das-team"。

1 个答案:

答案 0 :(得分:1)

在你的网站root .htaccess:

中这样做
RewriteEngine on

# add www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

# remove /new/ from URL
RewriteCond %{THE_REQUEST} /new/(\S*)\s [NC]
RewriteRule ^ /%1 [L,R=302]  

# remove /index.php from URL
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=302,NC]

# route everything to /new/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^new/ new%{REQUEST_URI} [L,NC]