2017-09-27 104 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