【问题标题】:URL Rewriting dont work with variablesURL 重写不适用于变量
【发布时间】:2014-07-08 18:46:23
【问题描述】:

这是 htaccess 文件中的规则:

RewriteRule ^Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examens-list.php?idChapitre=$1&idTitre=$2 [L]

在 href 我已经把这个网址:

href="<?php echo 'Serie-examens-'.$idChapitre.'-'.$idTitres[0].'-debuter');?>"

单击链接时出现此错误:

Not Found

The requested URL /SerieJava/Serie-examens-1-1-debuter was not found on this server.

我正在使用 wamp,并且我测试了不带变量的重写 url,它可以工作

规则的错误在哪里?

完整的 .htaccess 文件:

SetEnv REGISTER_GLOBALS 0

<Files .htaccess>
order allow,deny
deny from all
</Files>

Options -Indexes

RewriteEngine On
RewriteBase /SerieJava/

RewriteRule ^Le-premier-chapitre chapitre1.php [L]

RewriteRule ^Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examenss-list.php?idChapitre=$1&idTitre=$2 [L]

谢谢

【问题讨论】:

  • 这个 .htaccess 在哪里?
  • 在这个目录中:wamp/www/SerieJava/.htaccess
  • 你开启重写引擎了吗?
  • 你能把你完整的/SerieJava/.htaccess展示给你吗
  • 你的 PHP 有语法错误

标签: php .htaccess url-rewriting wamp


【解决方案1】:

您在链接 php 中有一个不应该存在的关闭 ):

href="<?php echo 'Serie-examens-'.$idChapitre.'-'.$idTitres[0].'-debuter');?>"
                                                                         ^ here

这可能会导致导致链接无效的 php 错误。

编辑: 另请注意,您正在使用它来重写:

RewriteRule ^Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examens-list.php?idChapitre=$1&idTitre=$2 [L]

^ 表示开头,因此如果您的路径是 /SerieJava/Serie-examen....,它将不会被重写,因为它以 /SerieJava/ 开头。

您应该发布整个 .htaccess 文件,看看是否是问题所在,但看起来确实如此。

【讨论】:

  • @user3817737 html 源代码是什么样的?
  • @user3817737 如果那是 html 源,那么 php 没有被处理,但我怀疑基于你的问题。你能从浏览器发布真正的html源代码吗?
  • 这是我的 .htaccess : SetEnv REGISTER_GLOBALS 0 命令允许,拒绝所有 选项 -Indexes RewriteEngine On RewriteRule ^Le-premier-chapitre chapitre1.php [L ] RewriteRule ^/SerieJava/Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$examens-list.php?idChapitre=$1&idTitre= $2 [L]
  • @user3817737 去掉起始正斜杠:RewriteRule ^SerieJava/Serie-exa...。您可能需要 examens-list.php 的正斜杠或完整路径...
【解决方案2】:

这应该是你的/SerieJava/.htaccess:

SetEnv REGISTER_GLOBALS 0

<Files .htaccess>
   order allow,deny
   deny from all
</Files>

Options -Indexes

RewriteEngine On
RewriteBase /SerieJava/

RewriteRule ^Le-premier-chapitre chapitre1.php [L,NC]

RewriteRule ^Serie-examens-([0-9]+)-([0-9]+) examens-list.php?idChapitre=$1&idTitre=$2 [L,QSA,NC]

【讨论】:

  • 在浏览器中输入http://localhost/SerieJava/examens-list.php?idChapitre=1&amp;idTitre=$1会发生什么?
  • 最初使用这些链接调用页面,它工作正常,现在当我尝试添加重写 url 我有错误
  • 当您在浏览器中访问http://localhost/SerieJava/examens-list.php?idChapitre=1&amp;idTitre=1 时,它会为您打开正确的页面吗?
  • 验证您的/SerieJava/.htaccess 是否启用,方法是在您的.htaccess 上放置相同的垃圾(随机)文本,看看它是否会产生500(内部服务器)错误?跨度>
  • 它已启用,当我在其中添加相同的垃圾时,我有 500 个内部服务器
【解决方案3】:

尝试在重写规则中添加/

RewriteEngine On
RewriteBase /SerieJava
RewriteRule ^/Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examens-list.php?idChapitre=$1&idTitre=$2 [L]

注意^ 之后和Serie 之前的/

您也可以尝试从规则中删除胡萝卜:

RewriteEngine On
RewriteBase /SerieJava/
RewriteRule Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examens-list.php?idChapitre=$1&idTitre=$2 [L]

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2012-07-28
    • 2012-12-01
    • 2019-09-04
    • 2013-09-18
    • 2019-03-13
    相关资源
    最近更新 更多