我想使用.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"。
答案 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]