我的htaccess:
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中,我有简短的网址和网址网址:
youtube1 = "https://www.youtube.com/watch?v=9bZkp7q19f0"
youtube2 = "https://www.youtube.com/watch?v=wcLNteez3c4"
etc.
这些文件位于root和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 :(得分:1)
当您查看错误消息时,您会注意到
PHP警告:语法错误,意外&#39; =&#39;位于第2行/var/www/example.com/index.php第1行\ n的links.ini中
在查看links.ini
时,您会在网址中看到第二个等号=
youtube1 = https://www.youtube.com/watch?v=9bZkp7q19f0
所以引用该值,例如
youtube1 = "https://www.youtube.com/watch?v=9bZkp7q19f0"
应该按预期工作。
答案 1 :(得分:0)
所以我把php更改为:
<?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');
?>
我不知道这有多优雅...... 如果有人知道更好的方式......
答案 2 :(得分:0)
You might want to look at this simple url shortener, it's very similar to what you are doing, but with a json instead of an ini file.
The core is the .htaccess
file:
Options +SymLinksIfOwnerMatch
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!index\.php).+)$ /index.php?short=$1 [NC,L,QSA]