【问题标题】:Creating a Pretty URL创建漂亮的 URL
【发布时间】:2013-05-25 10:42:23
【问题描述】:

它几乎类似于how to create pretty urls,但它似乎对我不起作用。

这是我的网址:

http://localhost/pr/ajax/ajax_load.php?task=get_blob&blid=199

如何将其转换为:

http://localhost/pr/ajax/get_blob/199

这是我的 .htaccess

RewriteEngine On
RewriteBase /pr/ajax/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+pr/ajax/ajax_load\.php\?task=([&\s]+)&blid=([0-9]+) [NC]
RewriteRule ^/%1/%2? [R=301,L,NE]

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/([^/]+)/?$ /pr/ajax/ajax_load.php?task=$1&blid=$2 [L,NC,QSA,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(js|css|jpeg|gif|png|pdf)$ /pr/ajax/%{REQUEST_URI} [NC,L,R=302]

.htaccess 应该放在哪里?我的意思是,你把它放在哪里重要吗?我的 root 位于 pr

【问题讨论】:

    标签: php mysql .htaccess


    【解决方案1】:

    .htaccess 文件的位置很重要,特别是对于重写规则中测试的 URI 路径,它只包含文件所在目录之后的路径段。为了克服这个限制,下面的代码中只使用了 REQUEST_URI 变量。

    这是一个经过测试的解决方案,适用于/pr/pr/ajax/ 目录中的.htaccess 文件:

    Options +FollowSymlinks -MultiViews
    RewriteEngine On
    RewriteBase /
    RewriteCond %{THE_REQUEST} /pr/ajax/ajax_load\.php\?task=([^&]+)&blid=([^&\s]+) [NC]
    RewriteRule .*             /pr/ajax/%1/%2? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !ajax_load\.php [NC]
    RewriteCond %{REQUEST_URI} ^/pr/ajax/([^/]+)/([^/]+)/? [NC]
    RewriteRule .*  /pr/ajax/ajax_load.php?task=%1&blid=%2 [L,NC]
    

    【讨论】:

    • 这太棒了。我认为我需要重新编程 HTTP GET。但是,它似乎对所有 GET 方法都自动工作得很好。谢谢!
    【解决方案2】:

    试试这个:

    RewriteEngine On
    RewriteRule ^/pr/ajax/(.*)/(.*)$ /pr/ajax/ajax_load.php?task=$1&blid=$2 [NC,L]
    

    是的,将 htaccess 文件放在哪里确实很重要。您将文件放在要修改/操作其路径的文件的目录中。

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多