【问题标题】:htaccess rewriterule with PHP $_GET methods in URL? (From sub-sub-folder to root dir)在 URL 中使用 PHP $_GET 方法重写 htaccess? (从子子文件夹到根目录)
【发布时间】: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 Allapache2.conf 我总是转RewriteEngine ONphp_flag display_errors onphp_value error_reporting E_ALLOptions +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


    【解决方案1】:

    按如下方式进行:

    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]
    

    【讨论】:

    • 但是现在我遇到了一个问题,我需要调用“我的 URL”/cms/“带有内容名称”,并且在没有给出内容的情况下,它一开始就没有显示我的 index.php。 .. URL 也不会更改为“clear”“my URL”/cms/contentname 格式(我通过 GET 提供)... URL 现在看起来像这样:“my URL”/cms/content ?nav=content (当我设置内容名称时)或:“我的 URL”/cms/index.php?nav=content“。我仍然不知道如何删除它?但我仍然非常感谢您认为它至少在显示内容!
    • @Y.Hermes 如果重写完全如/cms/%1?所示,重定向后不会再添加nav=content。如果您使用的是 Apache 2.4 或更高版本,则可以使用[R=301,L,QSD] 标志。
    猜你喜欢
    • 2020-01-08
    • 1970-01-01
    • 2012-01-26
    • 2012-10-23
    • 2014-03-10
    • 1970-01-01
    • 2015-04-22
    • 2023-03-26
    • 2011-02-03
    相关资源
    最近更新 更多