我使用以下.htaccess
代码强制www
加入我的网站域名。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
现在我想改变我的网址:
www.mysite.com/index.php?i=something
到
www.mysite.com/something
但我仍然希望有能力去
www.mysite.com/admin.php
(例如)作为单独的页面。
我尝试将此代码RewriteRule ^(.*)$ index.php?i=$1 [NC]
添加到我的.htaccess
文件中,但是当我在/
之后键入任何内容时,它将被视为get变量。我该如何解决这个问题?
答案 0 :(得分:2)
你可以在根目录下的一个.htaccess文件中尝试这样的东西。
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteCond %{REQUEST_URI} !admin\.php [NC]
RewriteRule ^(.+)/? /index.php?i=$1 [L,NC]
如果admin.php
可以是任何文件,只需替换
RewriteCond %{REQUEST_URI} !admin\.php [NC]
带
RewriteCond %{REQUEST_FILENAME} !-f
要重定向到404错误处理程序脚本,请添加一行,如下所示:
ErrorDocument 404 /path/404.php
这只是一个例子,相应地进行修改。
答案 1 :(得分:1)
试试这个: -
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
答案 2 :(得分:0)
试试这个......
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/$ /index.php?i=$1 [L] // www.mysite.com/something/
或强>
RewriteRule ^(.*)$ /index.php?i=$1 [L] // www.mysite.com/something
答案 3 :(得分:0)
你必须添加这样的expiation,它必须在你的RewriteRule S=1
之后的Skip RewriteRule之前,请参阅此页面以获取有关此标志的更多信息http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteflags
RewriteCond %{REQUEST_URI} ^(.*)/admin\.php$ [NC,OR]
RewriteRule ^ admin.php [S=1,L]
RewriteRule ^(.*)/$ /index.php?i=$1 [NC]