2017-06-25 127 views
-1

即时通讯寻找重写我的网址,所以它是更多的搜索引擎优化和用户友好,我花了很多时间在这个,我正努力让我的头如何重写过程起作用。使用mod_rewrite重写URL使其更多的用户和搜索引擎友好

我遇到的问题之一是我的网站在使用子域的部分分解,该网站是一个比较网站,可以让您查找产品的详细信息或将产品与其他产品进行比较。摄像头部分位于'cameras.specced.co.uk'之下,我将在未来制作其他部分,例如'drones.specced.co.uk'和'phones.specced.co.uk'。

目前我加载通过数字ID的例如页面的信息,这是取为佳能1300D所有规格的网址:

http://cameras.specced.co.uk/compare.php?i=98 

我想改写弄成这样这样

http://cameras.specced.co.uk/compare/98 

对于并排比较2产品一侧的页面,网址目前看起来是这样的,(URL抓取佳能1300D VS尼康D5300的比较)

http://cameras.specced.co.uk/compare.php?1=98&2=111 

我想这个URL重写弄成这个样子

http://cameras.specced.co.uk/compare/98-vs-111 

这是我想出了,但是不起作用

RewriteRule ^i/([0-9]+)/?$ compare.php?i=$1 [NC,L] # Handle product requests 

我非常感谢所有帮助

+1

看起来一切都很好,但你真正的问题是什么?对于你所要求的问题,仅在这里有数百万个例子,当然这些答案中的一个会有所帮助?如果不是,因为你再问一遍,另一个答案会有什么不同? – arkascha

+0

我希望有人可以帮我改写我的URL使用mod_rewrite,我已经尝试过,并在这个多次失败,有一些在这里,因为我现在真的卡住了。我想重写这个URL:http://cameras.specced.co.uk/compare.php?我= 98成这样的东西:http://cameras.specced.co.uk/compare/98 – cousbrad

+1

这是非常简单的。如果您遇到问题,请将您当前的问题添加到您的问题中,并解释_exactly_是否有问题,因此如果您使用它,会发生什么_exactly_。 – arkascha

回答

2

你正在寻找类似的东西:两条规则,通常首先是更专业的:

RewriteEngine on 
RewriteRule ^/?compare/(\d+)-vs-(\d+)$ /compare.php?i1=$1&i2=$2 [END] 
RewriteRule ^/?compare/(\d+)$ /compare.php?i=$1 [END] 

这些规则可以在动态配置文件(“.htaccess”)和真正的http服务器主机配置中使用。如果你决定使用动态配置文件,那么你需要注意实际首先启用他们的解释。如果您使用的是真正的旧版本的Apache HTTP服务器,那么你可能与[L]标志更换[END]标志https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

:看看在AllowOverride指令为。否则,您将收到内部服务器错误,并根据http服务器错误日志文件中的提示进行查找。

一般提示:您应该始终将这些规则放置在HTTP服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess样式文件)。这些文件出了名的错误,很难调试,他们真的放慢了服务器。它们仅提供作为的情况下最后的选择,你没有对主机配置控制(读:真的很便宜的托管服务提供商),或者如果你有依赖于写自己的重写规则(这是一个明显的安全恶梦的应用)。

+0

嗯从来没有听说过,最好在配置级别包含规则。对于新的重写规则,虽然这需要重新启动Apache实例,不是吗? – chris85

+1

@ chris85事实上,这是一个很少被指出的细节,虽然它甚至是官方文档的一部分:http://httpd.apache.org/docs/current/howto/htaccess.html原因很明显:性能,可维护性和安全。 – arkascha

+1

@ chris85是的,更改主机配置需要重新启动服务器。然而,这可以使用“优雅”策略来完成,因此不会中断服务。 – arkascha

相关问题