我刚刚开始熟悉Apache Mod_rewrite,但我未能实现我的目标。
我正在建立一个网站,我想用干净的、用户友好的URL取代丑陋的URL。我目前已经创建了一些文件,但我不确定是否会创建干净的URL,我需要这些页面中的许多。
我有两个问题,关于专业人士如何创建这个网站,我们开始:
第一个问题:
我有以下文件结构,你可以在下面看到:
主文件夹:
- index.php(主页)
- login.php(登录页面)
-
register.php(注册页面)
在主文件夹下,我有:成员文件夹:
- index.php(仪表板页面)
- stats.php(统计页面)
第一个问题如下:
我目前只是使用简单的.php页面来访问它的内容。当有人输入以下内容时,使用1个index.php文件并包含必要的文件会更好吗?例如:/index.php?go=login
那么,这会比仅仅提供.php文件并在点击时提供它们的内容更专业吗?
第二个问题:
这个问题将围绕干净的URL。我想实现以下目标:
当有人访问时:http://www.example.com/index.php - it should redirects them to http://www.example.com/
当有人访问时:http://www.example.com/login.php
-应该将他们重定向到http://www.example.com/login/
-如果有人键入http://www.example.com/login
,也应该处理login.php
以及其他页面,如:
http://www.example.com/register.php
<->http://www.example.com/register/
(斜线应为可选)http://www.example.com/members/dashboard.php
<->http://www.example.com/dashboard/
(斜线应为可选)
等等…
我已经尝试创建一个重写条件,但它似乎不起作用。有人能告诉我最新情况吗?
我尝试过的:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^login/?$ login.php [NC]
我真的希望有人能帮我回答这两个问题。我已经搜索了两天了,我不知道应该使用什么重写规则。非常感谢!
编辑:
我应该使用基本的重定向并使用PHP处理其他代码吗?请有人帮帮我!
这个(未测试的)代码应该采用something.php
并重定向到/something
。
此外,它应该允许你继续做/search?query=foo
之类的事情,这将相当于/search.php?query=foo
。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(test|login|whatever)/?$ $1.php/$2 [NC,L]