我通常使用这个网站来解决我的问题,但是我第一次找不到合适的问题,所以请原谅我,如果它确实存在的话!
目前,我有这种格式的有效网址:
referencingOutlets
最后的数字是由CMS动态生成的,因此发布的任何新内容都会发生变化。
为了使用更短的网址,我希望这些网页可以通过以下格式访问这些网页:
<?php
if ($_POST['submit']) {
if(!$_POST['name']) {
$error="<br/>-Please enter your name";
}
if(!$_POST['email']) {
$error.="<br/>- Please enter your email";
}
if(!$_POST['subject']) {
$error.="<br/>- Please enter a subject";
}
if(!$_POST['message']) {
$error.="<br/>- Please enter a message";
}
if(!$_POST['check']) {
$error.="<br/>- Please confirm you are human";
}
if($error) {
$result="Whoops, there is an error; Please correct the following: $error";
} else {
mail("namitajamwal19@gmail.com", "Contact message", "Name: ".$_POST['name']."
Email: ".$_POST['name']."
Subject: ".$_POST['subject']."
Message: ".$_POST['message']);"
{
$result="Thank you, I'll be in touch shortly";
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Contact Us</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<section id="contact">
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h1>Contact Us</h1>
<?php echo $result;?>
<p>Send a message via the form below</p>
<form method="post" role="form">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Your Name" value="<?php echo $_POST['name']; ?>">
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Your email" value="<?php echo $_POST['email']; ?>">
</div>
<div class="form-group">
<textarea name="subject" rows="5" class="form-control" placeholder="Subject"><?php echo $_POST['subject']; ?></textarea>
</div>
<div class="form-group">
<textarea name="message" rows="5" class="form-control" placeholder="Message..."><?php echo $_POST['message']; ?></textarea>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="check">I am Human
</label>
</div>
<div align="center">
<input type="submit" name="submit" class="btn btn-secondary" value="send message"/>
</div>
</form>
</div>
</div>
</div>
</section>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
请帮助我,如果有更好的选择而不是使用htaccess,请告诉我。
答案 0 :(得分:0)
当然!您可以在apache的虚拟主机配置文件中使用mod_rewrite。
除了Sarcasm之外,重新路由URL的方法是使用接受url 的工具并对其执行某些操作,在典型的php安装的情况下是apache。如果PHP能够在不使用http服务器的情况下接受连接,那么PHP就可以做到。我想可以用PHP构建服务器并将其作为单例运行,但我从来没有听说过这样的事情。所以这就是事情,如果你明白你想要做什么,使用.htaccess和mod_rewrite并不是很难。在您的情况下,您希望能够将news.example.com/n15807翻译成非常长的uri。真的很长uri是服务器实际加载的内容。
mod_rewrite实际上与正则表达式匹配,并将其替换为另一个uri。因此,您可以尝试匹配^([^w]{3}).example.com/([a-z])([0-9]+)$
之类的内容并使用它来替换{{1}}中的值(我不知道数字前面的n应该是什么意思。)
我给的正则表达式只是为了指出你正确的方向;我还没有测试过它。 [编辑 - 它绝对不会像写的那样工作;自从我在mod_rewrite工作以来已经有一段时间了。但这个想法仍然有效。 FWIW,我不会尝试使用子域名,但是
摘要:使用适用于网址的工具。最容易获得的方式是使用.htaccess。一旦你弄明白,你就完成了。您可以在以后的网站中反复使用它。
答案 1 :(得分:0)
经过几个小时的搜索,我终于明白了!
RewriteEngine on
RewriteCond %{HTTP_HOST} ^news.example.com$
RewriteRule ^news/(.*)$ http://www.example.com/index/modules/news/article.php?storyid=$1\#siteBody [R=301,L,NE]
认为有一天可能会帮助某人不要像我一样花费多少时间!