我试图通过在.htaccess文件中使用重写来显示SEO友好的URL,但是我无法使其工作(我已经在StackExhange上研究了很多相关主题,在其他地方,但无济于事)。我想在此页面上获取id的值...
http://199.119.123.135/info/tool_surety_company.php?id=1
...并在URL中显示id值而不是丑陋的" tool_surety_company.php?id = 1"。
我想要得到这样的结果:http://199.119.123.135/info/travelers-group
我在.htaccess文件中使用以下代码:
RewriteCond %{THE_REQUEST} \ /+info/tool_surety_company\.php\?id=([^&]+)
RewriteRule ^ /info/%1/? [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^^info/([^/]+)/?$ /info/tool_surety_company.php?id=$1 [QSA]
但我收到了404错误。
有什么想法吗?提前谢谢!
答案 0 :(得分:0)
这里可能有一些我误解的东西,但我相信在服务器端代码上需要有一个机制来为新的“seo-friendly url”加载正确的内容。换句话说,当然,您可以重定向用户以显示不同的URL,但服务器如何知道要为该新URL加载哪些内容?
这是一个很好的资源,用于组合一个简单的例子。 https://moz.com/ugc/using-mod-rewrite-to-convert-dynamic-urls-to-seo-friendly-urls
更新:
从这里开始 - https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules
故障排除
404 Not Found
仔细检查浏览器中的新网址。它与文件匹配吗? 存在于服务器上由重写指定的新位置 规则?您可能必须使您的重写规则更广泛(您可能会 能够从第二个字符串中删除$ 1)。这将是直接的 重写到第二个字符串中给出的主索引页面。或者您 可能需要将文件从旧位置复制到新位置。
换句话说,获得404的唯一原因是服务器找不到浏览器地址栏中可见的URL中定义的请求文件。
使用Apache模块mod_rewrite启用Htaccess重写, 这是最强大的Apache模块和功能之一 availale。 Htaccess通过mod_rewrite重写提供特殊功能 能够在内部重写请求以及重定向请求 外部
当浏览器的位置栏中的网址与a保持相同时 请求它是内部重写,当url更改外部时 重定向正在发生。这是第一个,也是其中之一 人们在学习mod_rewrite时所拥有的最大心理障碍。
来自这里的更多信息: http://www.askapache.com/htaccess/modrewrite-tips-tricks.html