我希望有人可以帮助我。我正在构建一个CRM应用程序,需要帮助修改.htaccess文件来清理URL。我已经阅读了关于.htaccess和mod_rewrite的每篇帖子,我甚至尝试使用http://www.generateit.net/mod-rewrite/来获得结果但没有成功。这是我试图做的事情。
总结一下我的目标:
(40,27和6只是任意数字作为例子)
仅供参考,当我使用www.domain.com/crm/company.php?companyID=40的generateit.net/mod-rewrite网站作为示例时,以下是它告诉我放入我的内容。 htaccess文件:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^crm/company/([^/]*)$ /crm/company.php?companyID=$1 [L]
毋庸置疑,这不起作用。
好的,这是根据以下Gohn67提供的帮助进行更新
除了一个我似乎无法弄清楚的小错误之外,它正在工作。我在“crm”目录中创建了.htaccess文件。这是代码:
RewriteEngine On
RewriteRule ^test/([\d]+)$ /crm/company.php?companyID=$1 [L]
这会将www.domain.com/test/40重写为www.domain.com/crm/company.php?companyID=40,因此它非常接近我的需要。
错误是我无法用我的RewriteRule中的“company”替换“test”。我不知道为什么。除了“公司”这个词,我可以放任何东西;甚至是“crm”目录中其他PHP文件的名称,例如“contact”或“add-contact”。作为进一步的测试,我实际上将company.php重命名为test.php并将RewriteRule更改为:
RewriteRule ^company/([\d]+)$ /crm/test.php?companyID=$1 [L]
有效。
答案 0 :(得分:1)
是的,生成的重写在那里看起来很奇怪。我不确定它在这里匹配的是什么([^/]*)
。
这是一个可能适合您的示例。我在我的系统上测试了这些。
RewriteEngine On
RewriteRule ^crm/dash/?$ /crm/dash.php [L]
RewriteRule ^crm/company/([\d]+)/?$ /crm/company.php?companyID=$1 [L]
RewriteRule ^crm/contact/([\d]+)/?$ /crm/contact.php?contactID=$1 [L]
这只是你的几条路线的例子。我承认它们可能更强大,因为这样做会导致很多重写规则,其中一些你可以用更好的正则表达式模式消除。但希望这能让你开始。
以下是一些考虑了子目录的更新重写规则。它还修复了上面的一个错误:
RewriteEngine On
RewriteBase /crm
RewriteRule ^dash/?$ dash.php [L]
RewriteRule ^company/([\d]+)/?$ company.php?companyID=$1 [L]
RewriteRule ^contact/([\d]+)/?$ contact.php?contactID=$1 [L]