我希望有人可以帮助我。我正在构建一个 CRM 应用程序,需要帮助修改 .htaccess 文件以清理 URL。我已经阅读了所有关于 .htaccess 和 mod_rewrite 的帖子,我什至尝试使用http://www.generateit.net/mod-rewrite/来获得结果,但没有成功。这是我正在尝试做的事情。
- 我们将基本 URL 称为 www.domain.com
- 我们正在使用带有 mysql 后端和一些 jQuery 和 javascript 的 php
- 在那个“根”文件夹中是我的 .htaccess 文件。我不确定是否需要每个子目录中的 .htaccess 文件,或者根目录中的文件是否足够。
- 我们有几个实际的文件目录,包括“crm”、“sales”、“finance”等。
- 首先,由于这些帖子,我们想要剥离我自己能够做到的所有“.php”扩展名。但是,公司和联系人ID的查询是我卡住的地方。
- 现在,如果我加载 www.domain.com/crm/companies.php,它会在列表中显示所有公司。
- 如果我单击其中一家公司,它会使用 javascript 调用“goto_company(x)”jQuery 脚本,该脚本编写一个表单并根据公司的 ID (x) 提交该表单。这可以正常工作并保持链接干净,因为最终用户看到的所有内容都是 www.domain.com/crm/company.php。但是,您不能直接导航到公司。
- 因此,我们在 PHP 中添加了几行来查看 POST 是否为空,然后尝试使用 GET 来代替 www.domain.com/crm/company.php?companyID=40 来显示数据库中的公司 #40。
- 我需要重写此链接以及指向 www.domain.com/crm/company/40 的所有其他相关链接
- 我已经尝试了一切,但似乎没有任何效果。请记住,我需要为“联系人”执行此操作,并且在应用程序的销售部分也需要为“交易”执行某些操作。
总结一下我想要做的事情:
- 将 www.domain.com/crm/dash.php 更改为 www.domain.com/crm/dash
- 将 www.domain.com/crm/company.php?companyID=40 更改为 www.domain.com/crm/company/40
- 将 www.domain.com/crm/contact.php?contactID=27 更改为 www.domain.com/crm/contact/27
- 将 www.domain.com/sales/dash.php 更改为 www.domain.com/sales/dash
- 将 www.domain.com/sales/deal.php?dealID=6 更改为 www.domain.com/sales/deal/6
(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 中用“公司”一词替换“测试”。我不知道为什么。除了“公司”这个词,我可以放任何东西;甚至是 "crm" 目录中的其他 PHP 文件的名称,例如 "contact" 或 "add-contact"。作为进一步的测试,我实际上将 company.php 重命名为 test.php 并将 RewriteRule 更改为:
RewriteRule ^company/([\d]+)$ /crm/test.php?companyID=$1 [L]
这有效。