我怀疑如何建立这样的链接:
http://stackoverflow.com/questions/ask
好吧,基本上我想知道如何制作类似的链接。 Ask
是一个页面? mod_rewrite
删除了扩展名(php,asp,...)?
通常在我的网站中,我总是使用相同的网址www.something.com
。所有电话都是由ajax发出的。或者像:www.something.com/?section=contacts
感谢
答案 0 :(得分:2)
您正在寻找的术语是“友好的网址”
因此,例如,您的链接www.something.com/?section=contact
将成为www.something.com/section/contact
对于一个看着地址的人来说,这是“友好的”(如果你担心搜索引擎优化没有任何区别 - 机器不关心)。
为了使您的网址更加友好,您的网络服务器会将友好格式转换为基于查询字符串的实际格式。这样,您的脚本仍然可以访问查询字符串,但是读取您的URL的人不必查看构成查询字符串的丑陋问号和&符号。
您通常通过名为.htaccess
的文件来完成此操作。您可以在此处阅读有关使用.htaccess创建友好网址的教程:http://net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls/
答案 1 :(得分:1)
好吧,StackOverflow ASP.NET MVC,所以那里没有mod_rewrite,但除此之外。 :)
这类应用程序的一种典型方法是mod_rewrite(或其他任何等价物)将所有请求路由到同一个文件(例如,PHP文件)。然后该文件会查看所有部分(“问题”,“询问”等)并决定该怎么做。
但实际的URL与实际处理它的文件几乎没什么关系。这也非常灵活,因为你可以让你的网址更“漂亮”,让人类更容易阅读。谷歌也喜欢他们。
答案 2 :(得分:0)
“网址”的定义位于RFC1738
对于URI(“统一资源标识符”),URL(“资源定位器”)和URN(资源名称)的“友好”解释可以在维基百科的许多地方找到,包括这里:
http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
来自RFC 1738:
http://<host>:<port>/<path>?<searchpart>
PS: 作为一个完全独立的问题,这里是mod_rewrite的一个很好的总结:
答案 3 :(得分:0)
通常有两种方法。
1 - 创建一个文件夹,里面有index.php - index.php(和index.html)通常首先查找。这是最简单的方法,并不常用于大型网站。
http://whatever.com/questions/ask
可以改写为:
http://whatever.com/questions/ask/index.php
2 - 您可以在服务器上重写网址。使用.htaccess文件的codeigniter示例:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^(/index\.php|/img|/js|/css|/robots\.txt|/favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
第3条规则将index.php放在域之后的url中。基本上它让你在stackoverflow上写一个url并虚拟地将它转换成像你这样的URL。
答案 4 :(得分:0)
这些网址被称为“干净网址”,为了创建这些干净的网址,您可以使用mod_rewite网址重写引擎。
在像http://www.somedomain.ext/category/some-page
这样的干净网址中,“类别”和“某些页面”通常是动态网页的参数。重写引擎可以将上面的URL重写为http://www.somedomain.ext/index.php?cat=category&page=some-page
。
答案 5 :(得分:0)
你在某种程度上回答了自己的问题。如果您希望自己的网址与您在示例中显示的网址一样清晰且令人难忘,那么mod_rewrite
就是您的最佳选择。 AJAX调用不需要有URL,所以我不担心。 mod_rewrite
只能处理与网站中不同页面一起使用的非AJAX调用。此过程称为URL重写,它重写内部指向真实页面的URL,但GUI上的URL看起来就像您在示例中提到的那样。