我有PHP网址,用于显示每个页面的节目内容,如:
类别:
articles
gallery
page
books
....
URL:
http://localhost/cms/load.php?page=articles&id=1&title=this-is-a-title.html&lang=ru
http://localhost/cms/load.php?page=page&id=10&title=this-is-a-page-title.html&lang=ru
在行动中,我需要像这样自动重写URL到seo友好网址:
http://localhost/cms/ru/articles/1/this-is-a-title.html
http://localhost/cms/ru/page/10/this-is-a-page-title.html
load.php
$page = isset($_GET['page']) ? safeGET($_GET['page']) : null;
$id = isset($_GET['id']) ? safeGET($_GET['id']) : null;
if ($page=='articles') { include 'article.php'; } elseif { ... }
如何使用URL
(不使用mod重写的首选项)生成此PHP
?或者与.htaccess and PHP
?
答案 0 :(得分:1)
您可以通过以下方式实现此目的:
的.htaccess
RewriteEngine on
RewriteBase /cms/
RewriteRule ^([a-z,A-Z]+)/([a-z,A-Z]+)/([0-9]+)/([a-z,A-Z,0-9]+)$ ./load.php?page=$2&id=$3&title=$4&lang=$1 [L,NC]
这样你的load.php文件就不需要改变了,可以接受这些文件。
您需要更改创建网址的代码,如果您更新了当前生成网址的答案,我们也可以为您提供帮助。
答案 1 :(得分:1)
我建议使用路由类。您将添加一个htaccess文件,将所有内容重写为index.php文件,然后您将控制PHP中的所有路由。
AltoRouter是我最喜欢的https://github.com/dannyvankooten/AltoRouter。它的灵感来自Ruby的Sinatra,但如果您使用Google“PHP路由类”,您可以找到更多类似的类来用于路由您的URL。
答案 2 :(得分:1)
为自己省去一些痛苦并使用路由框架(即http://www.slimframework.com/)
虽然不包括seo friendly urls
(也称为slugs)的创建
答案 3 :(得分:0)
在这里,您可以找到两个有用的指南,用于了解.htacces的工作原理。有很多很好的例子,我希望它有所帮助:
第一个指南: http://code.tutsplus.com/tutorials/the-ultimate-guide-to-htaccess-files--net-4757
第二个指南: https://www.branded3.com/blog/htaccess-mod_rewrite-ultimate-guide/