htaccess重写规则与PHP $_GET方法在URL?(从子文件夹到根目录)



目前我正在编程一个小的cms,其中"index.php"正在加载可用的模板和属于数据库的内容,并与str_replace 's的内容操纵模板。通常的URL是这样的:

http://URL/Dir1/template_hp/index.php?nav=content (*1)

如您所见,我正在通过$_GET['nav']动态获取Content-Names。现在我试图用根目录(http://"URL"/".htaccess")中的。htaccess文件操纵URL:

http://URL/cms/content

如果你调用"http://URL/cms"index.php没有参数将显示为内容(保持干净的URL),如果你调用这个URL与".../a_content_name".../index.php?nav=content"将显示(也保持干净的URL),但如果你调用整个URL(*1)它将显示为清洁一次。

到目前为止,我一直在寻找和尝试超过15个小时,并且几乎完成了任何教程在网络上显示的所有内容,但我得到的要么什么都没有发生,要么我得到一个500内部服务器错误,即使使用Mod_rewrite生成器的东西。

我已经做的是,我AllowOverride Allapache2.conf我总是打开RewriteEngine ON, php_flag display_errors onphp_value error_reporting E_ALLOptions +FollowSymLinks。我自己写的是:

RewriteRule ^Dir1/template_hp/index.php?*.*(?(.*)=(.*))$ cms?.*(/$1/$2) [NC,L]

…有大约900.000种不同的方法(转义" . "(或转义" ? "),将RewriteBase设置为" myURL "并删除" ^ "或只尝试从网页(RewriteRule ^([^/]*)$ /Dir1/template_hp/index.php?nav=$1 [L])生成一次。

唯一有效的是RedirectMatch 301,但这只是我想要的一小部分:-(.

这里没有人知道为什么它不工作!

按如下步骤操作:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET /Dir1/template_hp/index.php?nav=([^s&]+) [NC]
RewriteRule ^ /cms/%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cms/(.+)/?$ /Dir1/template_hp/index.php?nav=$1 [NC,L]

最新更新