Php 写入.htaccess规则
我已经有了url中带有参数的站点。现在我正在考虑为用户创建干净的url,以避免url中的参数。我研究了.htaccess规则(mod rewrite),但有一件事我不明白,我是否需要更改所有位置的url,以便htaccess中的规则可以工作?我觉得这是更乏味的,因为我需要找到的地方,并改变它,以清除网址。例如,我有和。我把规则写成Php 写入.htaccess规则,php,.htaccess,Php,.htaccess,我已经有了url中带有参数的站点。现在我正在考虑为用户创建干净的url,以避免url中的参数。我研究了.htaccess规则(mod rewrite),但有一件事我不明白,我是否需要更改所有位置的url,以便htaccess中的规则可以工作?我觉得这是更乏味的,因为我需要找到的地方,并改变它,以清除网址。例如,我有和。我把规则写成 RewriteEngine On RewriteRule ^([^/]*)\.html$ /?view=$1 [L] 如果我去输入mystie.com/about.
RewriteEngine On
RewriteRule ^([^/]*)\.html$ /?view=$1 [L]
如果我去输入mystie.com/about.html或mysite.com/contact.html,这很好用。但现在的问题是,我需要在编码中找到位置,并将所有view=about或view=contact更改为about.html或contact.html。在这种情况下,它可能很简单,因为它只是我需要更改的标题。但是如果有url,如view=showdata?user=dsdsdsa&aga=12…我无法找到所有提到和更改的地方。有什么简单的方法或聪明的方法吗?谢谢您的帮助。您必须重新设计代码 但是,有机会以编程方式重新映射,以牺牲性能为代价 由于您在PHP上运行,因此可以使用输出缓冲的ob函数来:
显然,您需要在PHP脚本中映射一组规则。很抱歉,我没有提供任何代码,但我在几年前就这样做了,基于我找到的其他代码。但是方法很简单。重写规则只会影响以
.html
结尾的URL。因此,直接指向index.php
的链接应保持完全正常。不过,这些丑陋的链接会被搜索引擎发现并出现在搜索结果页面中
根据当前的重写规则,包含参数(如user=dsdsdsa
)的URL不能重写为干净的URL(如/showdata.html?user=dsdsdsa
)。这是因为如果在重写规则的替换子字符串中包含查询字符串,Apache将删除其他参数。您可以通过使用[QSA]
标志来避免这种情况。有关更多详细信息,请参阅
我不能说如何在PHP代码中找到所有丑陋的链接。您可能需要查看
视图=
存在的每个地方并手动更新它。如果我理解您的问题,您会问是否需要更改代码中所有硬编码的URL
本例中的答案是否定的,您不需要更改URL,更改URL时使用mod_rewrite
的优点是旧URL保持活动状态。如果您直接在浏览器中键入URL,也无所谓,如果您单击页面中的链接,它们将生成相同的HTTP请求(除了引用者)
当然,您可以逐步更改代码,使其使用真实的URL,以避免混淆。谢谢。。我试图理解htaccess中的规则如何工作,而不必编辑代码中的所有URL,如mysite.com/index.php?view=showdata&userddsda&id=33。