【问题标题】:Replace GET variables with slashes .htaccess用斜杠替换 GET 变量 .htaccess
【发布时间】:2014-02-19 05:40:55
【问题描述】:

我正在尝试使用 .htaccess 使我的网址“更漂亮”。

更改 domain.com/page/val1

domain.com/page.php?var1=val1

如果可能的话,我希望它也可以使用 2 个变量:

更改 domain.com/page/val1/val2

domain.com/page.php?var1=val1&var2=val2

这是我当前的 .htaccess 文件,用于删除 .php 扩展名:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

我发现其他主题的解决方案类似于添加这样的内容:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /$1/$2?var1=$3&var2=$4 [L,QSA,NC]

我尝试了很多方法来修改它,但它似乎永远不会起作用。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    试试这个代码:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^([^/]+)/?$ $1.php [L]
    
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]
    
    RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?var1=$2 [L,QSA]
    
    RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ $1.php?var1=$2&var2=$3 [L,QSA]
    

    【讨论】:

    • 谢谢。当我更改某些变量的位置时,它似乎起作用了。 但是由于某种原因,指向样式表和图像的链接在我的页面中不再起作用。
    • 我似乎已经通过使用图像/样式表的完整 url 修复了 src 问题。不是最好的,但它有效。
    • 为了使漂亮的 URL 正常工作,最好在 css、js、图像文件中使用绝对路径而不是相对路径。这意味着您必须确保这些文件的路径以 http:// 或斜杠 / 开头。
    猜你喜欢
    • 2013-06-20
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多