.htaccess-重写URL以删除扩展名并传递参数

约翰

我正在寻找一系列.htaccess语句,这些语句将转换以下网址

http://mysite.com/product           to http://mysite.com/product.php
http://mysite.com/product/55            to http://mysite.com/product.php?id=55
http://mysite.com/category/38           to http://mysite.com/category.php?id=38
http://mysite.com/resources/car/19      to http://mysite.com/resources/car.php?id=19
http://mysite.com/resources/car/19?color=red&year=2013  to http://mysite.com/resources/car.php?id=19&color=red&year=2013

换句话说,当在我的网站中渲染php文件时,我想删除.php扩展名。如果网址以数字结尾,那么我想将其作为id查询字符串参数传递我也想将所有常规查询字符串参数传递给phpcolorphp这样的文件year

我不确定如何构造这样的.htaccess文件。

其他说明我目前正在使用hte following,但是它没有考虑以数字结尾的url,并将其作为 id

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{QUERY_STRING} (.*)
RewriteRule . %{REQUEST_FILENAME}.php?%1 [L]

如果我可以做一些替换第二行REQUEST_FILENAME中尾随数字的事情,那将是很好的。

林俊

首先,您需要确保“多视图”已关闭。然后,您将需要3组重写规则:

Options -Multiviews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ /$1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([0-9]+)$ /$1.php?id=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^resources/([^/]+)/([0-9]+)$ /resources/$1.php?id=$2 [L,QSA]

如果URL实际上只是“产品”,“类别”和“汽车”,则可以更具体一些,那么您可以拥有:

Options -Multiviews
RewriteEngine On

RewriteRule ^product$ /product.php [L]

RewriteRule ^(product|category)/([0-9]+)$ /$1.php?id=$2 [L,QSA]

RewriteRule ^resources/car/([0-9]+)$ /resources/car.php?id=$1 [L,QSA]

约翰(行动)说:

这是.htaccess我最终得到的最终文件

RewriteEngine On
Options -Multiviews

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*)\/([0-9]+)$ $1.php?id=$2&%1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*)$ $1.php?%1 [L]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

htaccess重写不带.php扩展名的URL到文件

来自分类Dev

合并.htaccess规则:删除扩展名并重写URL变量

来自分类Dev

htaccess重定向隐藏php扩展名或传递参数

来自分类Dev

.htaccess-如果扩展名是.png,则从URL中删除目录

来自分类Dev

htaccess从url删除扩展名有效但是页面无法加载

来自分类Dev

htaccess重写规则并删除php文件扩展名

来自分类Dev

htaccess重写并删除.php扩展名

来自分类Dev

.htaccess删除单个文件的扩展名

来自分类Dev

htaccess使用隐藏扩展名无法很好地重写

来自分类Dev

.htaccess删除.html并强制重定向到无扩展名的url

来自分类Dev

htaccess从具有多个正斜杠的URL中删除.php扩展名

来自分类Dev

htaccess重写网址以插入.php扩展名

来自分类Dev

使用.htaccess删除扩展名,但保留参数会导致页面样式未设置

来自分类Dev

htaccess重定向隐藏php扩展名或传递参数

来自分类Dev

.htaccess-删除扩展名并传递参数的URL重写

来自分类Dev

从URL删除php扩展名-使用htaccess只能删除一个URL

来自分类Dev

如果URL不包含htaccess关键字,则删除URL中的php扩展名

来自分类Dev

htaccess不重写扩展名或斜杠

来自分类Dev

htaccess从url删除扩展名有效但是页面无法加载

来自分类Dev

用htaccess删除.php扩展名

来自分类Dev

如何使用Htaccess删除多个文件扩展名并重定向文件扩展名URL

来自分类Dev

htaccess不会删除php扩展名

来自分类Dev

.htaccess删除单个文件的扩展名

来自分类Dev

通过htaccess删除URL上的路径和扩展名

来自分类Dev

htaccess重写url参数

来自分类Dev

.htaccess重写传递2个参数的URL

来自分类Dev

Oxwall htaccess删除松散的php文件上的扩展名,并忽略index.php重写

来自分类Dev

Htaccess 重写以删除不适用于目录的 .php 扩展名

来自分类Dev

.htaccess 规则删除与现有重写规则冲突的文件扩展名

Related 相关文章

  1. 1

    htaccess重写不带.php扩展名的URL到文件

  2. 2

    合并.htaccess规则:删除扩展名并重写URL变量

  3. 3

    htaccess重定向隐藏php扩展名或传递参数

  4. 4

    .htaccess-如果扩展名是.png,则从URL中删除目录

  5. 5

    htaccess从url删除扩展名有效但是页面无法加载

  6. 6

    htaccess重写规则并删除php文件扩展名

  7. 7

    htaccess重写并删除.php扩展名

  8. 8

    .htaccess删除单个文件的扩展名

  9. 9

    htaccess使用隐藏扩展名无法很好地重写

  10. 10

    .htaccess删除.html并强制重定向到无扩展名的url

  11. 11

    htaccess从具有多个正斜杠的URL中删除.php扩展名

  12. 12

    htaccess重写网址以插入.php扩展名

  13. 13

    使用.htaccess删除扩展名,但保留参数会导致页面样式未设置

  14. 14

    htaccess重定向隐藏php扩展名或传递参数

  15. 15

    .htaccess-删除扩展名并传递参数的URL重写

  16. 16

    从URL删除php扩展名-使用htaccess只能删除一个URL

  17. 17

    如果URL不包含htaccess关键字,则删除URL中的php扩展名

  18. 18

    htaccess不重写扩展名或斜杠

  19. 19

    htaccess从url删除扩展名有效但是页面无法加载

  20. 20

    用htaccess删除.php扩展名

  21. 21

    如何使用Htaccess删除多个文件扩展名并重定向文件扩展名URL

  22. 22

    htaccess不会删除php扩展名

  23. 23

    .htaccess删除单个文件的扩展名

  24. 24

    通过htaccess删除URL上的路径和扩展名

  25. 25

    htaccess重写url参数

  26. 26

    .htaccess重写传递2个参数的URL

  27. 27

    Oxwall htaccess删除松散的php文件上的扩展名,并忽略index.php重写

  28. 28

    Htaccess 重写以删除不适用于目录的 .php 扩展名

  29. 29

    .htaccess 规则删除与现有重写规则冲突的文件扩展名

热门标签

归档