我的index.php
文件从数据库中下拉文章列表,目标是用户可以点击它们查看完整文章。链接如下所示:
echo "<tr><td colspan='2'><a href='"."article.php?type=".$type."&id=".$id."&title=".$title."'>".$title."</a></td></tr>";
制作网址如下:
http://example.org/article.php?type=news&id=2&title=second-article-test
index.php
文件中的所有文章都链接到同一目录中的article.php
。
目标是让更友好的网址显示如下:
http://example.org/news/2/second-article-test
我一直在玩一些.htaccess配置,包括:
RewriteEngine On
RewriteCond %{REQUEST_FILE} !-f
RewriteCond %{REQUEST_FILE} !-l
RewriteCond %{REQUEST_URI} !^/article\.php [NC]
RewriteRule ^(.+)$ /article.php/$1 [L]
和
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/article/?
RewriteCond %{REQUEST_FILE} !-f
RewriteCond %{REQUEST_FILE} !-l
RewriteRule ^(.*)$ article.php?type=$1&id=$2&title=$3 [QSA,L]
但我似乎无法让它发挥作用。
我的两个问题是:
example.org/type/id/title
更改变量GET链接更友好?article.php
文件?我尝试了大约20种变体,每当有些事情搞砸了,如果有人知道如何解决这些问题,请尝试解释一下,以便我下次知道,谢谢!
答案 0 :(得分:2)
你不应该将变量映射的逻辑放入.htaccess文件中。
查看how to hide the php extension上的stackoverflow问题,然后你需要编写某种类型的FrontController(你需要解析$ _SERVER [&#39; REQUEST_URI&#39;]并确定解压缩的位置路径元素变成变量)。但实际上,这已经做了很多次你应该研究一个为你做这个的框架。如果您想要一些非常小的内容,请查看Silex或Slim。
答案 1 :(得分:1)
你可以玩这个:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/?article/?
RewriteCond %{REQUEST_FILE} !-f
RewriteCond %{REQUEST_FILE} !-l
RewriteRule ^/?(.*?)/(.*?)/(.*?)/?$ article.php?type=$1&id=$2&title=$3 [QSA,L]
# example.org/type/id/title