我的目标是使用.htaccess制作一些友好的URL。我需要一个mod_rewrite的(对的.htaccess)解决方案,可以让我有这样的URL:Apache Mod_Rewrite多个级别
http://www.example.com/admin/lots - > /admin/lots/index.php
http://www.example.com/admin/lots/edit/1 - > /admin/lots/edit.php?id = 1
http://www.example.com/admin/lots/view/1 - > /admin/lots/view.php?id=1
http://www.example.com/admin/lots/view/more/1 - > /admin/lots/view/more.php?id=1
http://www.example.com/admin/settings - >/admin/settings/index.php
http://www.example.com/admin/settings/edit/1 - > /admin/settings/edit.php?id=1
http://www.example.com/admin/project/status/edit/1 - > /admin/project/status/edit.php?id=1
可以有1至10个目录级别与一些网址。这是不太可能的,但如果这个RewriteCond/Rule可以扩展,那会很棒。
但是,“编辑”,“ID”和文件名可能不同。我认为解释这一点非常困难,尤其是因为有数百种可能性。
基本上,我想显示该文件是否存在,并且在URL中的文件名后面没有其他内容。如果它是一个文件,并且在文件名后有更多,则假定它是一个变量。如果它是一个没有任何其他内容的目录,我会更喜欢如果它可以去目录索引(在这种情况下index.php)。如果它是一个文件名后面的目录,我想要显示该文件。
请记住,如果URL的一部分既不是目录或文件,假设它是查询的一部分,如?id=1
如果需要,我可以把它的服务器配置,但是,我想保持简单愚蠢。
转到一个重写规则:抛开一切,是不是现有的文件在根目录下的一个文件,并让该文件找出哪些文件包含了PHP函数的全部范围的设置。更容易维护,然后大量的重写规则,并且更容易编码。 – Wrikken
@Wrikken我会认为这样做效率很低。大型Web应用程序如何处理这些类型的URL? – 1234567
他们完全按照我所说的去做:P(嗯,无论是这样,还是大型网站只是预渲染他们的所有网页,并确保这些网址实际存在)。为什么它会消耗PHP的更多资源来询问是否存在文件,然后让Apache询问文件是否存在?特别是如果你打算在那里运行一个php文件,那么最好在那个时候使它成为include语句。即使这样也不能说服你:你是否想过在PHP中花更多的时间来做这件事情与你将要实际运行的PHP文件的时间相比是否有意义? – Wrikken