我正在尝试使用HTACCESS重写我的剧目中的所有网址。我希望他们拥有相同的模型/架构。我在不同的网站上找到了一些代码,但是当我尝试它们时却没有工作。
这是我想要做的:
我有这个网址: localhost / projects.php?id = 1 我希望它看起来像这样: localhost / projects / 1
这是另一个例子:
我有这个网址:localhost / profile.php?id = 1 我希望它看起来像这样:localhost / profile / 1
换句话说,我想改变这个:
到
有什么方法可以用我的所有页面做到这一点吗?我不知道我应该在HTACCESS文件上写什么。
答案 0 :(得分:1)
首先使用.htaccess解析所有路径将是一个血腥的痛苦,您应该只处理所请求的文件及其参数然后您应该解析您的PHP代码中的参数(这称为路由),您将为您创建路由应用
请检查下面的.htaccess规则;
#These are our conditions to run our rewrite rule
RewriteCond %{REQUEST_FILENAME} !-f #Request is not a file
RewriteCond %{REQUEST_FILENAME} !-d #Request is not a directory
RewriteCond %{REQUEST_FILENAME} !-l #Request is not a link
#This is our rewrite rule
RewriteRule ^([a-zA-Z0-9]*)?/(.*)$ $1.php/$2 [QSA,L] #QSA means QueryStringAppend modify according to your need, L means this is my last rule which same with stop processing rewrite rules
你应该有一个类似下面的PHP代码来处理你的路由请求
<?PHP
$requestedPath = trim($_SERVER["PHP_SELF"],"/");
$request = explode("/",$requestedPath,2);
$requestFileName = $request[0]; //This is your requested file as you know already from .htaccess
$requestParams = $request[1]; //You should parse this params according to your routing need
?>
希望这些信息可以帮助您了解路由和通用.htaccess规则。
PS:您的请求将类似于www.example.com/myaction/first-parameter/second-parameter/third-parameter,对于此示例,$ requestParams将为first-parameter/second-parameter/third-parameter