我的应用程序为其用户创建自定义 url。例如:www.example.com/user1
直到这里一切正常。但是自定义页面喜欢www.example.com/about
或www.example.com/terms
显示与自定义 URL 相同的内容,因为根据我的 .htaccess 文件,“example.com/”之后的任何内容都会显示“admin.php”文件的内容。我该如何区分这两种情况。
问问题
570 次
2 回答
0
我个人倾向于在 url 中命名对象,这样我就可以根据对象的类型创建重写规则,例如:
http://www.example.com/users/username
http://www.example.com/pages/about
http://www.example.com/news/xyz
如果这不是一个有效的解决方案,您将得到最好的服务,使用单个“门户”索引页面并在 PHP 中解析正确的路由。所以你的重写就像:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php [L]
然后在 index.php 中,您将使用更复杂的逻辑解析 URL,例如:
<?php
$requested_url = explode('?', $_SERVER['REQUEST_URI']);
$requested_url = array_shift($requested_url);
$requested_url_parts = explode('/', $requested_url);
if(!empty($requested_url_parts) && empty($requested_url_parts[0]))
array_shift($requested_url_parts);
if(end($requested_url_parts) == "")
array_pop($requested_url_parts);
reset($requested_url_parts);
/* you now have an array of each part of the URL, so now you can load the valid page */
/* So to start maybe do a mysql lookup to see if current($requested_url_parts) is a valid username or not, if it is, load user page, if not, check if its a valid page e.c.t. */
?>
于 2013-11-05T15:35:42.633 回答
0
您可以更改www.example.com/user1
为www.example.com/users/user1
,也可以更改www.example.com/about
为www.example.com/pages/about
于 2013-11-05T15:28:50.547 回答