2013-08-28 31 views
0

重定向页面的.html到的index.php如果你看看我怎样才能让我的网站采用了先进的mod_rewriting

http://ecocool.zadesigns.com 

点击help链接,并将其转移到

http://ecocool.zadesigns.com/help 

这个作品,但如果您物理键入“http://ecocool.zadesigns.com/help.html

它不起作用。

我怎么能修改htaccess,因此,如果我键入

http://ecocool.zadesigns.com/help.html 

在地址栏中它会从URL中.html,加载index.php文件,然后向我发送到正确的页面。

这里是htaccess文件。

<ifModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !index 
    RewriteRule ^(.*)$ index.php?q=$1 [NC,L,QSA] 
</ifModule> 

回答

0

第一条规则重定向从html到目录的风格,我们不使用任何条件,因为我们不想检查,如果文件存在与否。

第二条规则会将格式等目录重定向到index.php,除非它是index.php,然后它什么都不做。

所以基本上,如果你点击链接:

http://ecocool.zadesigns.com/anything.html 

它将使链接这个样子的用户:

http://ecocool.zadesigns.com/anything/ 

然后将在内部显示index.php?q=anything结果。

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteRule ^(.*)\.html$ /$1/ [R=301,NC,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !index\.php 
RewriteRule ^([^/]+)/?$ /index.php?q=$1 [L,QSA] 

如果你不介意具有URL显示.html,只是想服务于它的位置index.php然后使用:

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} .*\.html$ 
RewriteRule ^(.*)\.html$ /index.php?q=$1 [L,QSA] 

所以基本上,如果你点击链接:

http://ecocool.zadesigns.com/anything.html 

它会在内部显示index.php?q=anything结果,URL将保留:

http://ecocool.zadesigns.com/anything.html 
+0

该网页,这是最好的答案,多谢你既帮助。甚至认为你的答案是正确的我实际上有其他问题与冲突的系统都争取控制index.php和路由。生病必须问另一个关于那个问题 – Zuriel

+0

@ ZurielAndrusyshyn当然,当你这样做的时候给我留下评论链接,我会看看。 – Prix

2

如果您使用的是MODX Revolution,请转到系统>内容类型并删除HTML内容类型的.html扩展名。

清除您的网站缓存,并且使用Wayfinder或MODX链接标记([[~ ]])构建的任何链接将不再包含.html扩展名。

您可以访问使用http://ecocool.zadesigns.com/wtf

+0

我实际上已经在使用它,现在我必须删除.html,所以我不完全知道它的组合是否适合您的答案,但是这对您有帮助,所以谢谢! – Zuriel

+0

@ZurielAndrusyshyn - 这是正确的答案。在这种情况下,mod_rewrite不应该像Prix的帖子一样使用。 Modx有一个内置的系统,既快得多又漂亮。 – OptimusCrime