使用Apache在PHP上创建一个包含2个参数的友好URL

时间:2016-09-21 18:01:07

标签: php regex apache .htaccess seo

所以我在这里喝点汤。

我需要制作一个友好的网址。

这是我输入搜索值project_name和version

的URL

本地主机:8080 / demo_webpages_project / retrieval.html

这是我提交值

的地方 ?

本地主机:8080 / demo_webpages_project /的download.php PROJECT_NAME = QT&安培;版本3.1.2 =

我想要以下表格中的网址

本地主机:8080 / demo_webpages_project /下载/ 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=$1&version=$1
#RewriteRule ^/(.*)$ download.php?version=$1

#attempt2
#RewriteRule ^(.*)/(.*)$ download.php?project_name=$1&version=$2 [L,NC,QSA]
#RewriteRule ^(.*)$ download.php?version=$1

</IfModule>

如果有人可以帮我解决这个问题,我将非常感激。这是我第一次在这方面做些什么而且迷失了。

由于

2 个答案:

答案 0 :(得分:1)

/demo_webpages_project/内有这个.htaccess:

Options -MultiViews
RewriteEngine on
RewriteBase /demo_webpages_project/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ download.php?project_name=$1&version=$2 [L,QSA]

答案 1 :(得分:0)

根据这个article,您需要一个mod_rewrite(放在.htaccess文件中)规则,如下所示:

RewriteEngine on 
RewriteRule ^/news/([0-9]+)\.html /news.php?news_id=$1

这会映射来自

的请求
/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'
?>