【发布时间】:2016-01-05 19:44:38
【问题描述】:
目前我正在编写一个小型 cms,其中“index.php”正在从数据库加载可用模板和所属内容,并使用 str_replace 的内容来操作模板。通常的 URL 如下所示:
http://URL/Dir1/template_hp/index.php?nav=content (*1)
如您所见,我通过$_GET['nav'] 动态获取内容名称。现在我正在尝试使用放置在根目录 (http://"URL"/".htaccess") 中的 .htaccess 文件来操作 URL:
http://URL/cms/content
如果您调用“http://URL/cms”,不带参数的 index.php 将显示为内容(保持干净的 URL),如果您使用“.../a_content_name”调用此 URL,将显示“.../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]
...大约有 9.000.000 种不同的方式(转义“.”(或转义“?”),将 RewriteBase 设置为“myURL”并删除“^”或只是尝试从网页(RewriteRule ^([^/]*)$ /Dir1/template_hp/index.php?nav=$1 [L])生成一次。
唯一有效的是RedirectMatch 301,但这只是我想要的一小部分:-(。
这里没有其他人知道它为什么不起作用!
【问题讨论】:
标签: apache .htaccess mod-rewrite url-redirection friendly-url