【问题标题】:Rewrite URL to hide ?get= in .htaccess重写 URL 以在 .htaccess 中隐藏 ?get=
【发布时间】:2016-10-03 00:04:15
【问题描述】:

这是我网站的结构:

website.com/events/beachparty?date=1224
website.com/events/poolparty?date=0101
website.com/events/boatparty?date=1105

有很多不同的页面我都想使用获取功能。

我想使用 htaccess 重写 URL,以便可以像这样加载它们:

website.com/events/beachparty/1224
website.com/events/poolparty/0101
website.com/events/boatparty/1105

这是否可能无需为每个页面创建单独的规则?

提前致谢!

【问题讨论】:

    标签: php .htaccess url url-rewriting get


    【解决方案1】:

    这是否可能无需为每个规则创建单独的规则 页面?

    是的,您可以使用正则表达式,即:

    RewriteEngine On
    RewriteRule ^events/page([0-9]+)/([0-9]+)/?$ /events/page$1?date=$2 [L]
    

    上面会改写:

    www.yoursite.com/events/page99/123
    

    www.yoursite.com/events/page99?date=123
    

    注意事项:

    1. ([0-9]+) 将匹配 1 个或多个 (+) 数字
    2. 最后一个正斜杠是可选的/?
    3. $ 表示行尾(url)
    4. [L] = 最后,apache 将停止处理更多规则

    根据您的 cmets 更新:

    RewriteEngine On
    RewriteRule ^events/([0-9a-zA-Z]+)/([0-9]+)/?$ /events/$1.php?date=$2 [L]
    RewriteRule ^events/([0-9a-zA-Z]+)/?$ /events/$1.php [L]
    

    [0-9a-zA-Z] - 将匹配从azAZ 的任何数字或字母,1 次或多次

    【讨论】:

    • 感谢您的回复!不过有一个小问题。我以'page1'等为例。这些页面有不同的名称,没有任何数字。有解决办法吗?谢谢,
    • 我已经用一个更好的例子来说明页面名称是什么样的。再次感谢
    • 它给了我错误“在此服务器上找不到请求的 URL /events/boatparty/0101.php。”我的 htaccess 现在看起来像这样:“ RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] RewriteRule ^events/page([0-9a-zA- Z]+)/([0-9]+)/?$ /events/page$1?date=$2 [L]" 非常感谢
    • website.com/events/beachparty 还是website.com/events/beachparty.php ?
    • 快速更新 CSS。我将路径更改为绝对路径,现在工作正常!谢谢
    【解决方案2】:

    试试……

    RewriteEngine On
    RewriteRule ^events/beachparty/([0-9]+)/?$ /events/beachparty?date=$1 [L]
    RewriteRule ^events/poolparty/([0-9]+)/?$ /events/beachparty?date=$1 [L]
    RewriteRule ^events/boatparty/([0-9]+)/?$ /events/beachparty?date=$1 [L]
    

    【讨论】:

    • “这是否可能无需为每个页面创建单独的规则?”
    • 是的,有可能
    猜你喜欢
    • 2016-02-28
    • 2013-12-24
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2011-09-23
    • 2016-08-08
    • 1970-01-01
    相关资源
    最近更新 更多