获取网页ID值并通过.htaccess

时间:2015-11-12 16:36:04

标签: php apache .htaccess mod-rewrite

我试图通过在.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错误。

有什么想法吗?提前谢谢!

1 个答案:

答案 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