【问题标题】:Very basic htaccess pretty URL非常基本的 htaccess 漂亮的 URL
【发布时间】:2018-03-09 10:43:57
【问题描述】:

我在将硬编码 URL 重定向到漂亮 URL 时遇到问题。

我想访问以下网址:

mysite.com/index.php?page=links

通过导航到:

mysite.com/links/

我已经阅读了有关该主题的一大堆其他问题,但它们都与通过带有字符串的 url 传递的动态数据有关。我只想要一个简单的 htaccess RewriteRule,它只会影响这个特定的 url 而不会影响其他任何东西。

我尝试了很多东西,但没有任何效果,每次都是 404。

例子:

RewriteEngine On
RewriteRule ^links/ index.php?page=links

任何帮助表示赞赏。

编辑 - 对提供的建议答案做出反应。这完全不是我想要做的。我不是想将一个页面重定向到另一个页面,我只是想在浏览器中重写 URL。

【问题讨论】:

  • 您确认启用了.htaccess、mod_rewrite 和FollowSymLinks 吗? .htaccess 中还有其他指令吗?还有其他.htaccess 文件吗?
  • 嗨,是的,mod_rewrite 和 FollowSymLinks 已启用。没有其他 .htaccess 文件。只有其他指令是 ErrorDocument 404 /index.php?page=error&action=404 工作正常。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

我找到了解决方案。 apache2.conf 不允许覆盖,所以我添加了以下内容。

<Directory /var/www/html/public/>
   Options Indexes FollowSysmLinks
   AllowOverride All
   Require all granted
</Directory>

这样安全吗?

【讨论】:

    【解决方案2】:

    index.php

    <?php
    
      define('BASE_URL', '/mysite.com/');
    
      if (isset($_GET['page'])) {
        echo "query string ==> $_SERVER[QUERY_STRING]" . "<br />";
      } else {
        echo "Not query 'page'" . "<br />";         
      } 
    
      echo "url ==> $_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"  . "<br />";
    
    ?>
    
    <a href="<?php echo BASE_URL; ?>">index</a><br/>
    <a href="<?php echo BASE_URL; ?>1">1</a><br/>
    <a href="<?php echo BASE_URL; ?>2">2</a><br/>
    <a href="index.php?page=3">3</a><br/> 
    

    .htaccess

    RewriteEngine On
    
    #RegEx pattern matching => query string
    RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1
    RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-26
      • 2014-09-24
      • 2019-02-27
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      相关资源
      最近更新 更多