php - 创建一个漂亮的 URL

标签 php mysql .htaccess

它几乎类似于 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应该放在哪里?我的意思是,你把它放在哪里有关系吗?我的位于pr

最佳答案

.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]

关于php - 创建一个漂亮的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16826301/

相关文章:

php date_create 显示不正确的年份

mysql - 计算日期之间的平均、最小、最大间隔

PHP、Mysql选择行

apache - 我可以从 .htaccess 文件编写 HTML 响应吗

php - 将 include 与 localhost 一起使用时出现 mysql_num_rows() 错误

javascript - WordPress中如何仅在用户滚动页面时显示菜单

php - Paypal mass pay soap php集成

php - 使用SQL进行分页查询

apache - .htaccess - 删除扩展

.htaccess - htaccess RewriteRule 带有文字问号(不是查询字符串)