我做了一些搜索,但我对PHP不是很有经验,所以我不知道我正在寻找的正确术语/单词。 但是,我确实知道自己想做什么。
Title
,Category
,Tags
等等......)pinkflowers.php
,redroses.php
等......)因此,如果有人访问“mysite.com/pinkflowers.php”,则应使用我的数据库中的pinkflowers
变量输出页面。
但是,文件pinkflowers.php
实际上并不存在,只存在template.php
,这将是我数据库中所有图像的“蓝图”。
我希望从浏览器中的网址中删除.php
。
“mysite.com/pinkflowers.php”=> “mysite.com/pinkflowers”
我已经拥有使用现有网页(下方)执行此操作的代码;我不确定它是否也适用于这些“虚构”页面。
(.htaccess)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
如果用户尝试访问没有相关数据库条目的页面(例如:“mysite.com/430jfif0ij”),则应将其重定向到主页。
我不希望任何人给我所有的答案,但请至少引导我朝着正确的方向开始制作这样的模板。 谢谢!的
答案 0 :(得分:2)
我最终能够解决自己的问题,同时没有给出任何答案。
我在这里遵循了这个教程: http://net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls/
我的.htaccess
包含:
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^category1/(.*)$ ./template.php?image=$1
RewriteRule ^category2/(.*)$ ./template.php?image=$1
RewriteRule ^category3/(.*)$ ./template.php?image=$1
etc...
category#
- 是我的图片分类的“文件夹”。
我在template.php
上执行此操作以从网址中提取变量:
$result = mysql_query('SELECT * FROM image_list WHERE image_name="' . mysql_real_escape_string($_GET['image']) . '"');
如果主页的访问者输入了无效的网址/ ID,请redirect
访问该主页,我使用了这个:
if (mysql_num_rows($result)==0) {
echo "<script>window.location = 'http://mysite.com/'</script>";
}
因此,所有这些方法的组合完全符合我的要求。
答案 1 :(得分:0)
让你的.htaccess像:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ template.php/$1
然后(在template.php
上)使用$_SERVER["path_info"]
确定用户输入的路径(即/pinkflowers
)并相应地查询数据库。
我喜欢$_SERVER["path_info"]
的原因是因为它不使用(或污染)GET变量空间。