2017-09-27 108 views
1

我无法将硬编码的URL重定向到一个漂亮的URL。非常基本的htaccess漂亮的URL

我想访问以下网址:

mysite.com/index.php?page=links 

导航到:

mysite.com/links/ 

我读了一大堆的其他问题这一话题,但它们都涉及到动态数据正在通过URL传递字符串。我只想要一个简单的htaccess RewriteRule,它只会影响这个特定的url,而不会影响其他任何东西。

我试了一大堆东西,但没有任何工作,404的每一次。

实施例:

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

任何帮助理解。

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

+0

你有没有证实'.htaccess',mod_rewrite的和'FollowSymLinks'被启用? '.htaccess'中是否有其他指令?任何其他'.htaccess'文件? – MrWhite

+0

[htaccess重定向一个文件到另一个]的可能重复(https://stackoverflow.com/questions/23184738/htaccess-redirect-one-file-to-another) – neuromatter

+0

嗨,是的mod_rewrite和FollowSymLinks被启用。没有其他.htaccess文件。只有其他指令是'ErrorDocument 404 /index.php?page = error&action = 404',它工作正常。 – user3717922

回答

0

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

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

这是安全吗?

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