2017-02-05 8 views
1

Мой Htaccess:Php URL Shortener со статическими HTMLs

RewriteEngine On 
RewriteCond $1 !^(index\.php) 
RewriteRule ^(.*)$ index.php?l=$1 [L] 

и PHP:

<?php 
$links = parse_ini_file('links.ini'); 

if(isset($_GET['l']) && array_key_exists($_GET['l'], $links)){ 
header('Location: ' . $links[$_GET['l']]); 
} 
else 
    include ('index.html'); 
?> 

В links.ini у меня есть короткий URL-адрес и адрес веб-сайта:

youtube1 = "https://www.youtube.com/watch?v=9bZkp7q19f0" 
youtube2 = "https://www.youtube.com/watch?v=wcLNteez3c4" 
etc. 

Эти файлы находятся в корне и сокращении URL-адресов.

В index.html у меня есть меню со статическими HTML-страниц:

<a href="/" >Home page</a> 
<a href="page1" >page1</a> 
<a href="page2" >page2</a> 
etc. 

Но когда я нажимаю на них только перезагружает index.html?

Любая помощь будет подтверждена!

Я пытался поставить статическую HTML ссылку в links.ini:

page1 = page1 

, но это не работает, либо ... Я получаю страница не перенаправлять правильно ошибку.

+0

вы пробовали 'var_dump ($ ссылки); '? – hjpotter92

ответ

1

Когда вы смотрите в сообщениях об ошибках, вы заметите

PHP Предупреждение: ошибка синтаксиса, неожиданный '=' в links.ini на линии 1 \ п в /var/www/example.com/index .php на линии 2

и при взгляде на links.ini, вы увидите, второй знак равенства = в URL

youtube1 = https://www.youtube.com/watch?v=9bZkp7q19f0

Так, ссылаясь на значение, например.

youtube1 = "https://www.youtube.com/watch?v=9bZkp7q19f0" 

должно заставить его работать должным образом.

+0

Спасибо за это, я добавил ссылки на YouTube для примера. Проблема, с которой я сталкиваюсь, заключается в том, что она не открывает статические htmls (menu) в index.html. Я думаю, что проблемы с htaccess могут быть проблемой? – Jim34

+0

Нет, это не так. Я скопировал ваши файлы примеров дословно в свою тестовую среду и перенаправил на соответствующее видео YouTube, когда я введу 'http: // www.example.com/youtube1' (после цитирования в links.ini, конечно). Таким образом, код работает, и проблема связана либо с links.ini, либо с index.html. Посмотрите в error.log для дальнейших подсказок. –

0

Так я изменил РНР это:

<?php 
$links = parse_ini_file('links.ini'); 

if(isset($_GET['l']) && array_key_exists($_GET['l'], $links)){ 
header('Location: ' . $links[$_GET['l']]); 
} 

else if($_GET['l'] == 'index' | $_GET['l'] == 'page1' | $_GET['l'] == 'page2') 
    include($_GET['l']. '.html'); 

else if($_GET['l'] == '') 
    include('index.html'); 

else 
    include('404.html'); 

?> 

Я не знаю, как это элегантный ... Если кто-то знает лучше ...

 Смежные вопросы

  • Нет связанных вопросов^_^