使用 Apache 在 PHP 上使用 2 个参数创建一个友好的 URL
Make a friendly URL with 2 parameters on PHP with Apache
所以我在这里有点麻烦。
我需要做一个友好的URL。
这是我输入搜索值 project_name 和版本
的 URL
localhost:8080/demo_webpages_project/retrieval.html
这是我提交值的地方
localhost:8080/demo_webpages_project/download.php?project_name=QT&version=3.1.2
我想要下面形式的URL
localhost:8080/demo_webpages_project/download/QT/3.1.2
我尝试使用 .htaccess 执行此操作,但没有真正找到解决方案
以下是 .htaccess 文件的代码。
<IfModule mod_rewrite.c>
#Turn the engine on
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#attempt1
#RewriteRule ^(.*)/$ download.php?project_name=&version=
#RewriteRule ^/(.*)$ download.php?version=
#attempt2
#RewriteRule ^(.*)/(.*)$ download.php?project_name=&version= [L,NC,QSA]
#RewriteRule ^(.*)$ download.php?version=
</IfModule>
如果有人能帮助我解决这个问题,我将不胜感激。这是我第一次从事这方面的工作,但迷路了。
谢谢
根据此 article,您需要一个如下所示的 mod_rewrite(放置在 .htaccess 文件中)规则:
RewriteEngine on
RewriteRule ^/news/([0-9]+)\.html /news.php?news_id=
这映射了来自
的请求
/news.php?news_id=63
到
/news/63.html
另一种可能性是使用 forcetype 来实现,它会强制沿着特定路径的任何内容使用 php 来评估内容。因此,在您的 .htaccess 文件中,放入以下内容:
<Files news>
ForceType application/x-httpd-php
</Files>
然后 index.php 可以根据 $_SERVER['PATH_INFO'] 变量采取行动:
<?php
echo $_SERVER['PATH_INFO'];
// outputs '/63.html'
?>
里面有这个 .htaccess /demo_webpages_project/
:
Options -MultiViews
RewriteEngine on
RewriteBase /demo_webpages_project/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ download.php?project_name=&version= [L,QSA]
所以我在这里有点麻烦。
我需要做一个友好的URL。
这是我输入搜索值 project_name 和版本
的 URLlocalhost:8080/demo_webpages_project/retrieval.html
这是我提交值的地方
localhost:8080/demo_webpages_project/download.php?project_name=QT&version=3.1.2
我想要下面形式的URL
localhost:8080/demo_webpages_project/download/QT/3.1.2
我尝试使用 .htaccess 执行此操作,但没有真正找到解决方案
以下是 .htaccess 文件的代码。
<IfModule mod_rewrite.c>
#Turn the engine on
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#attempt1
#RewriteRule ^(.*)/$ download.php?project_name=&version=
#RewriteRule ^/(.*)$ download.php?version=
#attempt2
#RewriteRule ^(.*)/(.*)$ download.php?project_name=&version= [L,NC,QSA]
#RewriteRule ^(.*)$ download.php?version=
</IfModule>
如果有人能帮助我解决这个问题,我将不胜感激。这是我第一次从事这方面的工作,但迷路了。
谢谢
根据此 article,您需要一个如下所示的 mod_rewrite(放置在 .htaccess 文件中)规则:
RewriteEngine on
RewriteRule ^/news/([0-9]+)\.html /news.php?news_id=
这映射了来自
的请求/news.php?news_id=63
到
/news/63.html
另一种可能性是使用 forcetype 来实现,它会强制沿着特定路径的任何内容使用 php 来评估内容。因此,在您的 .htaccess 文件中,放入以下内容:
<Files news>
ForceType application/x-httpd-php
</Files>
然后 index.php 可以根据 $_SERVER['PATH_INFO'] 变量采取行动:
<?php
echo $_SERVER['PATH_INFO'];
// outputs '/63.html'
?>
里面有这个 .htaccess /demo_webpages_project/
:
Options -MultiViews
RewriteEngine on
RewriteBase /demo_webpages_project/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ download.php?project_name=&version= [L,QSA]