我已根据我从数据库中获取的值设法更改了网址。 在我的网址中,我需要传递文章ID和文章标题。
$articleId=123;
$articleTitle='First Article';
echo '<a href="'.$articleId.'&'.str_replace(" ","-",$articleTitle).'">Read More</a>';
在我的htaccess文件中
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) display.php?id=$1&$2
然后在Display.php上,我将使用Get方法获取文章ID。 但我的问题是,当我看到它显示这样的网址时。
http://localhost/News/123&First-Article
但我需要像这样显示网址。
http://localhost/News/First-Article
并在Display.php文件中显示文章详细信息。 希望我已经清楚地解释了这个问题。请指教。 在此先感谢。
答案 0 :(得分:0)
我要说你必须改变这个:
RewriteRule (.*) display.php?id=$1&$2
到那个:
RewriteRule ^(.+)[&](.+)$ display.php?id=$1/$2
答案 1 :(得分:0)
你只需要传递标题
echo '<a href="'.str_replace(" ","-",$articleTitle).'">Read More</a>';
in .htaccess
RewriteRule (.*) display.php?id=$1
因此$_GET['id']
会直接获取您的文章标题。
答案 2 :(得分:0)
您可以尝试类似
的内容RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /News/(.*)&(.*)\ HTTP
RewriteRule ^ /News/%2/%3? [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^News/(.*)/(.*)$ /News/$1&$2 [L]
将http://localhost/News/123&First-Article
显示为http://localhost/News/123/First-Article
编辑:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)&(.*)\ HTTP
RewriteRule ^ /%2/%3? [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ /News/$1&$2 [L]
答案 3 :(得分:0)
根据我提出的问题,最合适的答案是维护一篇独特的文章名称。
$articleTitle='First Article';
echo '<a href='.str_replace(" ","-",$articleTitle).'">Read More</a>';
在您的Htaccess文件
上Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) display.php?id=$1
那么网址就像我想要的那样。
答案 4 :(得分:0)
在数据库表“article_url_name”中创建一个列,并使用此函数创建文章URL名称并存储在数据库中。
function make_url_name($title){
$result = "";
$str = strtolower(stripslashes($str));
$str = preg_replace("/ /i", "-", $str);
for($n = 0; $n < strlen($str); $n++){
if(preg_match("#^[a-z0-9-]+$#", $str[$n]))
$result .= $str[$n];
}
// Removing multiple ----
$result = preg_replace("/-----/i", "-", $result);
$result = preg_replace("/----/i", "-", $result);
$result = preg_replace("/---/i", "-", $result);
$result = preg_replace("/--/i", "-", $result);
return $result;
}
把它放在你的htaccess文件中
RewriteRule ^news/([a-zA-Z0-9-]+)$ articles.php?url_name=$1 [NC,L]
在“articles.php”文件中获取这样的url名称$ _GET ['url_name'];
将此url_name与数据库表中的“article_url_name”列匹配,并显示文章内容。
答案 5 :(得分:0)
如果传入 URI
/News/First-Article
您希望自己的网站看到
/display.php?id=First-Article
你的.htaccess将是
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^News/([^/]+)/? /display.php?id=$1 [L]
如果&#34; First-Article&#34;不够独特,您需要在URI中携带唯一标识符:
/News/123/First-Article
您希望自己的网站看到
/display.php?id=123&title=First-Article
你的.htaccess将是
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^News/([^/]+)/([^/]+)/?$ /display.php?id=$1&title=$2 [QSA,L]
如果标题无法用于查找文章,则可以省略标题。 QSA标志用于保留任何现有的传入Query String变量(并且只添加id和title)。