Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mod_重写.htaccess中的链接和格式_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php mod_重写.htaccess中的链接和格式

Php mod_重写.htaccess中的链接和格式,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我的网站上有各种链接,它们都是通过PHP MySQL查询生成的。 因此,在一个页面上,它可能会给出大量结果,如果单击其中一个,我可能会看到: …/sector.php?county=Kent 但是我有一个重写规则 RewriteEngine On RewriteRule ^county/([^/]*)\.html$ /sector.php?county=$1 [L] 但当我点击链接时,我仍然看到上面的内容,而不是: http://sitename.co.uk/county/Kent 我做错什

我的网站上有各种链接,它们都是通过PHP MySQL查询生成的。 因此,在一个页面上,它可能会给出大量结果,如果单击其中一个,我可能会看到:

…/sector.php?county=Kent

但是我有一个重写规则

RewriteEngine On
RewriteRule ^county/([^/]*)\.html$ /sector.php?county=$1 [L]
但当我点击链接时,我仍然看到上面的内容,而不是:

http://sitename.co.uk/county/Kent
我做错什么了吗? 这是.htaccess文件的顶部,以防格式错误,其他所有内容都正常工作:

RewriteEngine On
RewriteRule ^county/([^/]*)\.html$ /sector.php?county=$1 [L]
AuthName "Restricted Area" 
AuthType Basic 
AuthUserFile /customers/6/c/d/sitename.co.uk/httpd.www/...
AuthGroupFile /dev/null 
<Files site.php>
require valid-user
重新编写引擎打开
重写规则^county/([^/]*)\.html$/sector.php?county=$1[L]
AuthName“限制区”
AuthType Basic
AuthUserFile/customers/6/c/d/sitename.co.uk/httpd.www/。。。
AuthGroupFile/dev/null
需要有效用户
。。。显然,这不是全部,只是他的结构


即使我手动指向新链接…county/Kent,我也会得到一个404,您需要在html中重写链接url。

Mod_rewrite不会修改您输出的链接。它只修改从一个url到另一个url的传入请求。如何解释该url取决于您的应用程序。将由您以href='/country/xxx'的形式获取链接输出。此时,只有您可以回答如何执行此操作,因为这取决于应用程序的编码方式


尝试转到/country/Keny时获得404的原因可能是您在.htaccess文件的匹配规则中包含了.html。您的第一个示例规则没有,但是示例.htaccess文件中的规则有。

但是如何,因为它们都是通过php/mysql查询生成的:/n那么您应该编辑php。否则就不可能了。选择url连接的那一行,它应该很容易匹配。另一种方法是将原始url重定向到重写的url,但这是一种非常肮脏和不必要的方式。不确定是谁否决了这个答案,但OP说“但当我点击链接时,我仍然看到上面的内容,而不是”这意味着链接本身没有被修改。但是如果我编辑PHP来创建不同的链接,我该如何提取所有的信息?>这肯定会删除POST和GET的使用吗?你是在建议我重做所有链接,然后连接url以查找数据?你仍然有所有的get参数和新的url,这就是你的重写规则所做的。county/xyz在您的服务器上被转换为county=xyz。您知道主机是否为apache启用了mod_rewrite吗?是的。起初我不确定,但我确实检查过。所以如果我点击以下链接:它会保持不变吗?或者它会变成:我是否错过了在这里重写mod的要点?:'(它将保持不变。mod_rewrite不会更改浏览器中的任何内容。下面是发生的情况……浏览器将/county/Keny发送到您的服务器。mod_rewrite截取它,并调用php/sector.php?county=Kent。输出直接发送到浏览器。浏览器甚至不知道发生了什么。它认为它只是转到了/count。)/一直以来都是Kent。另外,我看到你用重写规则更新了问题,并在两个规则中都添加了.html。这对url/county/Kent不起作用。规则指定url必须以.html结尾才能匹配并进行重写。/county/Kent不起作用。好吧,太棒了,开始工作了,非常有帮助D-Rock,谢谢澄清,但最后一个问题。没有图像加载到那里,知道为什么吗?