2012-09-05 131 views
1

我有一个网站,它只有3页的动态url。并为此我不去php功能。所以我决定去.htaccess重写规则,但我没有任何运气。用htaccess重写不起作用

这是我的实际网址:/index.php?mode=service&inid=1

我想将它改写到这一点:/home-theater

我试试我的自我和与此代码:

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\.mysite\.com.au$ [NC] 
RewriteRule ^(.*)$ http://www.mysite.com.au/$1 [L,R=301] 

Options +FollowSymLinks 
DirectoryIndex index.php 

RewriteEngine On 
RewriteBase/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
RewriteRule ^index\.php$ http://www.mysite.com.au/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^home-theater/?$ index.php?mode=service&inid=1 [L,NC,QSA] 

我仍然不能让它工作。

此外,我写这个代码之前www重定向index.php,所以我猜如果它导致任何问题或不。 index.php到www网站重定向工作完美,但这是行不通的。

回答

1

使用L标志是这样的:

RewriteRule ^home-theater/?$ index.php?mode=service&inid=1 [L,NC,QSA] 

记住这一点,因为这会在内部将请求转发给您的index.php不会改变URL在浏览器中。

此外,如果这不起作用,然后提供您的问题完整的.htaccess。

更新:我在这里修改你的.htaccess,请立即尝试清除浏览器缓存后:

DirectoryIndex index.php 

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^www\.mysite\.com.au$ [NC] 
RewriteRule ^(.*)$ http://www.mysite.com.au/$1 [L,R=301] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
RewriteRule^http://www.mysite.com.au/ [R=301,L] 

RewriteRule ^home-theater/?$ index.php?mode=service&inid=1 [L,NC,QSA] 

RewriteCond %{ENV:REDIRECT_STATUS} !200 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^/index.php [L] 
+0

感谢您的答复,但它不工作。我需要那个浏览器和搜索引擎看到家庭影院的url,但服务器从索引url生成页面。我认为它可以帮助你。我更新问题,并把我的整个htaccess代码,如果有帮助。 – Rcreators

+0

我在更新部分修改了.htaccess,请在清除浏览器缓存后立即尝试。还要报告access.log中的相关部分是一个error.log文件。 – anubhava

+0

谢谢。它的工作就像一个魅力。我现在只有一个问题。我有url动态生成。与链接。所以我不能编辑网址。现在发生了什么。上面的url作品,如果我在浏览器中写入。但是当我点击实际链接时,它显示旧的网址。 – Rcreators