2012-05-18 44 views
1

我一直在尝试执行一个mod-rewrite来清理我的网址。我从来没有这样做过。htaccess问题入门

以下是我的一个URL的一个例子:

http://www.example.com/listings.php?category=Accident%20and%20Crash%20Repairs 

文件listings.php是在我的网站的根目录下。

我测试过在我的服务器上启用了mod-rewrite,并发现它正常工作。

从一个空白文件开始我试图创建一个.htaccess文件来重写我的网址。以下是我迄今为止尝试:

RewriteEngine On 
RewriteRule ^([^/]*)\.html$ /listings.php?category=$1 [L] 

RewriteEngine On 
RewriteRule ^/listings.html$ /listings.php?category=Accident%20and%20Crash%20Repairs [L] 

在下面的例子中,我只是想获得一个部分的URL改变,松散的基础上回答关于堆栈溢出另一查询。

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteBase/
RewriteRule ^lineage/?$ listings.php [NC,L] 
</IfModule> 

我已经尝试了很多组合,并遵循一些教程。不用说没有任何工作。

如果可能的话,我想的网址显示为:

http://www.example.com/listings/accident-and-crash-repairs 

,但如果不是我会满足于没有看到该变量在所有。

任何人都可以指出我出错的地方,或者以任何方式帮助我解决问题吗?

非常感谢。

+0

如果您加载了'http:// www.example.com/lineage /'或'http:// www.example.com/listings.html'或'http://www.example.com/事故%20于是%20Crash%20Repairs.html'?你有404页吗? – Gerben

+0

@Gerben感谢您的评论。没有404页面。页面看起来很好,但没有任何结果。 –

+0

因此'http://www.example.com/listings.php?category = Accident%20and%20Crash%20Repairs'加载您的页面的罚款与所有结果? – anubhava

回答

1

启用mod_rewrite的,并通过httpd.conf的.htaccess,然后把这个代码在你.htaccessDOCUMENT_ROOT目录:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+listings/[^\?\s%20]+\s [NC] 
RewriteRule ^listings/([^-]+)-([^-]+)(.*)$ listings/$1\%20$2$3 [L,NC] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+listings/[^\?\s%20]+\s [NC] 
RewriteRule ^listings/([^-]+)/?$ listings.php?category=$1 [L,NC,QSA] 

RewriteCond %{QUERY_STRING} ^(category)=([^%20]+)%20([^%20]+)(.*)$ [NC] 
RewriteRule ^(listings\.php)/?$ $1?%1=%2-%3%4 [R=302,L,NC,NE] 

RewriteCond %{QUERY_STRING} ^category=([^\s%20]+)$ [NC] 
RewriteRule ^(listings)\.php/?$ $1/%1? [R=302,L,NC,NE] 

一旦就位这个递归以规则为基础的/listings/accident-and-crash-repairs一个URI将被转发到/listings.php?category=accident%20and%20crash%20repairs

并且将/listings.php?category=accident%20and%20crash%20repairs的URI从外部重定向到/listings/accident-and-crash-repairs

一旦你确认它的工作正在改变R=302R=301

+0

谢谢你的回答。我现在正在看一看。会让你知道我如何继续。 –

+0

查看了你的答案并修改了我的.htaccess文件以适应,不幸的是我仍然无法使mod_rewrite工作。添加到文件时,站点重定向301可以正常工作,但不会加载mod_rewrite。奇怪!我的主机公司坚持认为,mod_rewrite已在所有服务器上启用。无论如何,非常感谢您的回答。 –

+0

你没有工作的URI是什么?你能否提供一些细节,比如什么都行不通?你有没有得到404或什么>最后,请在你的问题中发布你当前的.htaccess。 – anubhava