我知道有一百篇关于Mod Rewrite的文章,教程和手册,但我倾向于通过示例更好地学习,所以我要求的是一个快速的漂亮网址转换,我会在路上(所以我可以完全剖析它的作用,所以我可以把它应用到其他人身上)
我有这个网址:http://www.example.com/single.php?id=1
现在如果它可以遵循与Stack Overflow相同的约定,那么id = 1就是页面的实际标题。
如果有任何帮助,我在PHP变量中有标题吗?
如果有人可以将上述内容转换为:http://www.example.com/single/here-is-my-cool-title(最后一位是动态的,取决于PHP变量),我将不胜感激。
这可能吗?
答案 0 :(得分:3)
/questions/5142095/pretty-urls-for-web-application
解决这个问题:
/single.php?id=5142095
重写规则将是:
RewriteRule ^questions/([0-9]*)/(.*)$ /single.php?id=$1
这看起来是uri的开始(在域之后)^
,单词questions
,任何长度的数字`[0
这是寻找:
^
URI的开头questions
/
[0-9]*
(例如1,123,1234等)/
.*
(即问题标题)$
URI的结尾当字符匹配(例如[0-9] *或。*)在括号中时,mod_rewrite将匹配结果放入编号的美元变量中。在上面的规则中,[0-9]*
匹配任意数字(以及任意长度的数字)并将其放入$1
。第二个匹配.*
匹配任何字符的任意长度,并将匹配放入$2
。
您的应用程序将在规则的右侧收到URI,并将美元变量替换为匹配项。
答案 1 :(得分:1)
关于mod重写的文章数量你是正确的 - 我个人不喜欢不断添加额外的规则,然后担心该规则是否会被捕获......
为此,我更喜欢简单地将批次传递给根索引文件,然后允许服务器端决定如何处理它。
答案 2 :(得分:1)
与其他人不同,这个答案将为您提供解决方案,不是针对特定问题,而是针对整个问题。仅仅因为它是基于现实生活经验,而不是基于理论。
This answer包含您需要的所有内容,包括来自旧式网址的SEO友好重定向和用于更改旧脚本以使其像往常一样运行的代码。
您唯一要做的就是更改网站上的链接生成代码。我希望这不是什么大不了的事。
答案 3 :(得分:0)
你必须使用Apache的mod-rewrite,这是一个例子:
<Directory /www/yoursite/>
RewriteEngine On
RewriteRule ^single/?(.*)?/?$ article.php?id=$1 [L]
</Directory>
编辑:在重写中添加整数标识符是个好主意,例如:
RewriteRule ^single/([0-9]+)/?(.*)?/?$ article.php?id=$1&text=$2 [L]