目前我正在编程一个小的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 All
在apache2.conf
我总是打开RewriteEngine ON
, php_flag display_errors on
,php_value error_reporting E_ALL
和Options +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]