非常基本的htaccess漂亮的URL

时间:2017-09-27 20:11:17

标签: php apache .htaccess mod-rewrite

我无法将硬编码的网址重定向到漂亮的网址。

我想访问以下网址:

mysite.com/index.php?page=links

导航至:

mysite.com/links/

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

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

示例:

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

任何帮助表示感谢。

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

2 个答案:

答案 0 :(得分:0)

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

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

这样安全吗?

答案 1 :(得分:0)

的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