我在使用查询字符串重写文件路径时遇到问题
我正在尝试获取如下所示的网址:
https://url.com/products/1_Samsung_Galaxy
并像这样重写对我的服务器的请求:
https:url.com/model.php?id=1&title=Samsung_Galaxy
这是我的 htaccess 到目前为止的样子:
RewriteEngine On #rewrite no ending files to .php if file doesn't exist RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !products/ RewriteRule ^([^.]+)$ .php [NC,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/products/([1-9]+)(.*)$ model.php?id=&title= [NC,L]
使用当前配置,请求将发送到与 model.php 位于同一目录中的名为 products.php 的文件,但似乎位于不同的目录中,因为具有相对路径的 products.php 中引用的一些脚本文件会抛出异常它们包含的对象不存在的错误。
实际上,我的主要问题是我不知道 apache 语法或它是如何工作的,而且我很难找到可以了解 apache 的资源。由于某种原因,apache 文档没有太大帮助。如果有学习如何编写 apache 文件的好资源,我也很乐意查看。
P粉4638244102024-01-02 10:59:01
您的问题有点模糊,但我认为这就是您正在寻找的:
RewriteEngine On # rewrite /products/to /model.php/..... RewriteRule ^/?products/(\d+)(.*)$ /model.php?id=&title= [L] # rewrite to "...php" if such file exists RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [L]
如果在 http 服务器的主机配置中实施,这些规则将起作用。或者,如果您无权访问该文件,则可以在位于 http 主机的 DOCUMENT_ROOT
文件夹中的分布式配置文件(“.htaccess”)中进行访问。
与您的尝试的主要区别:
您还提到您“不熟悉 apache 语法”并且很难找到资源来学习它。
我总是推荐 apache 模块的官方文档。它们品质卓越,并提供了很好的示例:
https://httpd.apache.org/docs/current/mod /mod_rewrite.html